在 Reg 查询中使用变量



我有以下内容,旨在执行以下操作:

计算出HKEY_USERS中的所有 SID,然后在 reg 查询中使用该变量来检查每个HKEY_USER是否存在密钥。但是,它告诉我这是一个无效的键,因为它基本上只是在设置 hkeyuserpath 时错过了%%~na,然后在 reg 查询上失败。我做错了什么?

for /f %%a in ('reg query HKEY_USERS') do (
    echo %%~na
    set hkeyuserpath="HKEY_USERS%%~naSoftwareMicrosoftWindowsCurrentVersionRun"
    reg query %hkeyuserpath% /v *WhatIamLookingfor*
    if "%ERRORLEVEL%" EQU "0" goto HELLO
    if "%ERRORLEVEL%" EQU "1" goto GOODBYE
    :HELLO
    echo Hello
    GOTO END
    :GOODBYE
    GOTO END
)
:END
pause

你在 for 循环中设置 hkeyuserpath,所以你必须使用延迟扩展来访问变量。

setlocal enabledelayedexpansion
for /f %%a in ('reg query HKEY_USERS') do (
    echo %%~na
    set hkeyuserpath="HKEY_USERS%%~naSoftwareMicrosoftWindowsCurrentVersionRun"
    reg query "!hkeyuserpath!" /v *WhatIamLookingFor*
    if not errorlevel 1 (
      Echo(Hello & goto :end
    ) ELSE (
      Echo(Goodbye
    )
)
:end
pause

最新更新