Creates the specified registry key
#include <WinAPIReg.au3>
_WinAPI_RegCreateKey ( $vKey [, $sSubKey = '' [, $iAccess = $KEY_ALL_ACCESS [, $iOptions = 0 [, $tSecurity = 0]]]] )
$vKey | Name of the key to be open (see remarks). or Handle to an open registry key. If the key already exists, the function opens it. The calling process must have $KEY_CREATE_SUB_KEY access to the key. This handle is returned by the _WinAPI_RegCreateKey() or _WinAPI_RegOpenKey() function, or it can be one of the following predefined keys: $HKEY_CLASSES_ROOT $HKEY_CURRENT_CONFIG $HKEY_CURRENT_USER $HKEY_LOCAL_MACHINE $HKEY_USERS |
$sSubKey | [optional] The name of a subkey that this function opens or creates. The subkey specified must be a subkey of the key identified by the $vKey parameter; it can be up to 32 levels deep in the registry tree. If an empty string (Default), the return is a new handle to the key specified by $vKey. |
$iAccess | [optional] The mask that specifies the access rights for the key. This parameter can be one or more of the following values: $KEY_ALL_ACCESS $KEY_CREATE_LINK $KEY_CREATE_SUB_KEY $KEY_ENUMERATE_SUB_KEYS $KEY_EXECUTE $KEY_NOTIFY $KEY_QUERY_VALUE $KEY_READ $KEY_SET_VALUE $KEY_WOW64_32KEY for creation in the 32-bit key area $KEY_WOW64_64KEY for creation un the 64-bit key area $KEY_WRITE |
$iOptions | [optional] This parameter can be one of the following values: $REG_OPTION_BACKUP_RESTORE $REG_OPTION_CREATE_LINK $REG_OPTION_NON_VOLATILE (Default) $REG_OPTION_VOLATILE |
$tSecurity | [optional] $tagSECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If this parameter is 0 (Default), the handle cannot be inherited. |
Success: | Handle to the opened or created key, @extended flag will contain one of the following disposition values: 0 (False) - The key existed and was simply opened without being changed. 1 (True) - The key did not exist and was created. |
Failure: | Sets the @error flag to non-zero, @extended flag may contain the system error code. |
$vKey can be a string containing the requested subkey in this case $sSubKey must be empty
An application cannot create a key that is a direct child of $HKEY_USERS or $HKEY_LOCAL_MACHINE.
An application can create subkeys in lower levels of the $HKEY_USERS or $HKEY_LOCAL_MACHINE trees.
If the key is not one of the predefined registry keys ($HKEY_*) you must call the _WinAPI_RegCloseKey() function after finished using the handle.
Search RegCreateKeyEx in MSDN Library.
#RequireAdmin
#include <Debug.au3>
#include <WinAPIReg.au3>
_DebugSetup(Default, True)
Example()
Func Example()
Local $sKey = 'SOFTWARE\Temp'
; must run with #RequireAdmin
Local $sKeyroot = "HKEY_LOCAL_MACHINE"
;~ Local $sKeyroot = "HKEY_CURRENT_USER"
_DebugReport("- Key Creation" & @TAB & $sKeyroot & "/" & $sKey & @CRLF & @CRLF)
Local $hKey = _WinAPI_RegCreateKey($sKeyroot, $sKey)
If $hKey Then
_DebugReport("- Key successfully Created" & @CRLF)
Local $iDeleteKey = _WinAPI_RegDeleteKey($hKey)
If $iDeleteKey Then
_DebugReport("- Key successfully Deleted" & @CRLF)
Else
_DebugReport("! Key cannot be deleted @error = " & @error & @CRLF)
EndIf
_WinAPI_RegCloseKey($hKey)
$iDeleteKey = _WinAPI_RegDeleteKey($hKey)
If $iDeleteKey Then
_DebugReport("! Key Close unsuccessful" & @CRLF)
Else
_DebugReport("- Key already deleted" & @CRLF)
EndIf
Else
_DebugReport("! Key cannot be created @error = " & @error & ' Extended code: ' & @extended & ' (0x' & Hex(@extended) & ')' & @CRLF)
EndIf
EndFunc ;==>Example
; example with key containing subkey
#include <Debug.au3>
#include <WinAPIReg.au3>
_DebugSetup(Default, True)
Example()
Func Example()
Local $hKey = _WinAPI_RegCreateKey("HKEY_CURRENT_USER\Temp")
If $hKey Then
_DebugReport("- Key successfully Created" & @CRLF)
Local $iDeleteKey = _WinAPI_RegDeleteKey($hKey)
If $iDeleteKey Then
_DebugReport("- Key successfully Deleted" & @CRLF)
Else
_DebugReport("! Key cannot be deleted @error = " & @error & @CRLF)
EndIf
_WinAPI_RegCloseKey($hKey)
$iDeleteKey = _WinAPI_RegDeleteKey($hKey)
If $iDeleteKey Then
_DebugReport("! Key Close unsuccessful" & @CRLF)
Else
_DebugReport("- Key already deleted" & @CRLF)
EndIf
Else
_DebugReport("! Key cannot be created @error = " & @error & @CRLF)
EndIf
EndFunc ;==>Example