@ECHO OFF IF NOT "%OS%"=="Windows_NT" GOTO Syntax IF "%~2"=="" GOTO Syntax IF NOT "%~3"=="" GOTO Syntax WMIC /? >NUL 2>&1 || GOTO Syntax ECHO.%* | FINDSTR /R /C:"[/?]" >NUL && GOTO Syntax SETLOCAL ENABLEDELAYEDEXPANSION SET hDefKey= SET sSubKeyName= SET uRequired= :: permission name number description :: =============== ====== =========== :: KEY_QUERY_VALUE 0x1 query the values of a registry key :: KEY_SET_VALUE 0x2 create, delete, or set a registry value :: KEY_CREATE_SUB_KEY 0x4 create a subkey of a registry key :: KEY_ENUMERATE_SUB_KEYS 0x8 enumerate the subkeys of a registry key :: KEY_NOTIFY 0x10 request change notifications for a registry key or for subkeys of a registry key :: KEY_CREATE 0x20 create a registry key :: DELETE 0x10000 delete a registry key :: READ_CONTROL 0x20000 Combines the STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY values :: WRITE_DAC 0x40000 modify the DACL in the object's security descriptor :: WRITE_OWNER 0x80000 change the owner in the object's security descriptor SET KEY_QUERY_VALUE="&H1" SET KEY_SET_VALUE="&H2" SET KEY_CREATE_SUB_KEY="&H4" SET KEY_ENUMERATE_SUB_KEYS="&H8" SET KEY_NOTIFY="&H10" SET KEY_CREATE="&H20" SET DELETE="&H10000" SET READ_CONTROL="&H20000" SET WRITE_DAC="&H40000" SET WRITE_OWNER="&H80000" IF DEFINED %~2 ( SET uRequired=!%~2! ) ELSE ( SET uRequired=%~2 SET uRequired="!uRequired:0x=&H!" ) FOR /F "tokens=1* delims=\" %%A IN ("%~1") DO ( IF "%%~A"=="HKEY_CLASSES_ROOT" SET hDefKey="&H80000000" IF "%%~A"=="HKCR" SET hDefKey="&H80000000" IF "%%~A"=="HKEY_CURRENT_USER" SET hDefKey="&H80000001" IF "%%~A"=="HKCU" SET hDefKey="&H80000001" IF "%%~A"=="HKEY_LOCAL_MACHINE" SET hDefKey="&H80000002" IF "%%~A"=="HKLM" SET hDefKey="&H80000002" IF "%%~A"=="HKEY_USERS" SET hDefKey="&H80000003" IF "%%~A"=="HKU" SET hDefKey="&H80000003" IF "%%~A"=="HKEY_CURRENT_CONFIG" SET hDefKey="&H80000005" IF "%%~A"=="HKCC" SET hDefKey="&H80000005" IF NOT "%%~B"=="" SET sSubKeyName="%%~B" ) IF DEFINED hDefKey IF DEFINED sSubKeyName IF DEFINED uRequired ( IF DEFINED Debug ( ECHO WMIC /NameSpace:\\root\default Class StdRegProv Call CheckAccess hDefKey=%hDefKey% sSubKeyName=%sSubKeyName% uRequired=%uRequired% ) WMIC /NameSpace:\\root\default Class StdRegProv Call CheckAccess hDefKey=%hDefKey% sSubKeyName=%sSubKeyName% uRequired=%uRequired% ) ELSE ( ENDLOCAL GOTO Syntax ) ENDLOCAL GOTO:EOF :Syntax ECHO. ECHO CheckRegAccess.bat, Version 1.00 for Windows XP Professional and later ECHO Check if you have access to the specified registry key ECHO ECHO Usage: %~n0 "HIVE\RegKeyPath" permission ECHO. ECHO Where: HIVE is the registry hive name, e.g. HKEY_USERS or HKU ECHO RegKeyPath is the registry key path to be queried for access ECHO permission is the requested acces permission (name or hexadecimal) ECHO. ECHO Return codes: 0 for true (access), 1 for syntax error, 2 for false (no access) ECHO. ECHO Examples: ECHO Check write acces: ECHO %~n0 "HKLM\Software\My Software" KEY_SET_VALUE ECHO %~n0 "HKLM\Software\My Software" 0x2 ECHO Check read control access: ECHO %~n0 "HKLM\Software\My Software" READ_CONTROL ECHO %~n0 "HKLM\Software\My Software" 0x20000 ECHO. ECHO Note: For more details on permission values, check this script's comments or ECHO http://msdn.microsoft.com/en-us/library/aa384911^(v=VS.85^).aspx EXIT /B 1