批处理文件 REG QUERY
Batch file REG QUERY
我正在编写一个脚本来检索“DefaultUserName”注册表项的值。我有:
@echo off
Title Kiosk Account Autologin Password Changer
::Search for current Kiosk Account . . .
echo Identifying Kiosk Account
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /s
Pause
但我一直收到语法错误。我是编码初学者,感谢所有帮助。
最终目标是有一个输入输出 table 以根据用户名自动更改“DefaultPassword”键。我工作的公司正在更改所有密码,我不想全部手动完成。
只需在实际命令行中加上引号即可:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /s
没有它们,Windows NT
处的 space 会导致语法错误,因为那时它将 NT\CurrentVersion\Winlogon
视为传递给 reg query
命令的(第三个)参数。
鉴于您在 中所述的其他要求,这应该添加所需的密码字符串值数据,前提是现有的默认用户名恰好是不区分大小写的字符串 A
。
请注意,因为您是在受保护的 HKEY_LOCAL_MACHINE 根密钥内进行修改,所以下面的示例需要 运行 具有提升的权限。
@%SystemRoot%\System32\reg.exe Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultUserName" 2>NUL | %SystemRoot%\System32\findstr.exe /IRC:"^ *DefaultUserName *REG_SZ *A$" 1>NUL && %SystemRoot%\System32\reg.exe Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultPassword" /T "REG_SZ" /D "1" /F 1>NUL
这里您可能唯一不理解的是条件运算符&&
。有两个条件运算符,&&
和||
,前者表示如果上一条命令报告成功,后者表示如果上一条命令报告不成功。因此,在上述情况下,findstr.exe
查找以一个或多个 space 字符开头的行,后跟不区分大小写的字符串 DefaultUserName
,再后跟一个或多个 spaces,后跟不区分大小写的字符串 REG_SZ
,后跟一个或多个 spaces,并以不区分大小写的字符串 A
结尾。要了解有关 FindStr
命令实用程序选项的更多信息,请打开命令提示符 window,键入 findstr /?
并按 ENTER 键。如果返回的字符串匹配,它会通过 StdOut 打印到控制台 window,所以我将打印重定向到 NUL
设备,因为我们不需要看到或使用它,下面的命令&&
是 运行。 (如果不匹配,则该行的其余部分不会是 运行).
修改命令行,因为老实说,你还没有真正得到A
的用户名,直接改成A
根据需要在 FindStr
匹配中。因此,例如,如果您真的在寻找 Michael
的默认用户名,您将使用:
@%SystemRoot%\System32\reg.exe Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultUserName" 2>NUL | %SystemRoot%\System32\findstr.exe /IRC:"^ *DefaultUserName *REG_SZ *Michael$" 1>NUL && %SystemRoot%\System32\reg.exe Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultPassword" /T "REG_SZ" /D "1" /F 1>NUL
但是请记住您的 findstr /?
命令的输出。您会注意到某些字符是特殊字符,因此如果不转义某些特殊元字符,所有用户名字符串都可能无法正常工作。
我正在编写一个脚本来检索“DefaultUserName”注册表项的值。我有:
@echo off
Title Kiosk Account Autologin Password Changer
::Search for current Kiosk Account . . .
echo Identifying Kiosk Account
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /s
Pause
但我一直收到语法错误。我是编码初学者,感谢所有帮助。
最终目标是有一个输入输出 table 以根据用户名自动更改“DefaultPassword”键。我工作的公司正在更改所有密码,我不想全部手动完成。
只需在实际命令行中加上引号即可:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /s
没有它们,Windows NT
处的 space 会导致语法错误,因为那时它将 NT\CurrentVersion\Winlogon
视为传递给 reg query
命令的(第三个)参数。
鉴于您在 A
。
请注意,因为您是在受保护的 HKEY_LOCAL_MACHINE 根密钥内进行修改,所以下面的示例需要 运行 具有提升的权限。
@%SystemRoot%\System32\reg.exe Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultUserName" 2>NUL | %SystemRoot%\System32\findstr.exe /IRC:"^ *DefaultUserName *REG_SZ *A$" 1>NUL && %SystemRoot%\System32\reg.exe Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultPassword" /T "REG_SZ" /D "1" /F 1>NUL
这里您可能唯一不理解的是条件运算符&&
。有两个条件运算符,&&
和||
,前者表示如果上一条命令报告成功,后者表示如果上一条命令报告不成功。因此,在上述情况下,findstr.exe
查找以一个或多个 space 字符开头的行,后跟不区分大小写的字符串 DefaultUserName
,再后跟一个或多个 spaces,后跟不区分大小写的字符串 REG_SZ
,后跟一个或多个 spaces,并以不区分大小写的字符串 A
结尾。要了解有关 FindStr
命令实用程序选项的更多信息,请打开命令提示符 window,键入 findstr /?
并按 ENTER 键。如果返回的字符串匹配,它会通过 StdOut 打印到控制台 window,所以我将打印重定向到 NUL
设备,因为我们不需要看到或使用它,下面的命令&&
是 运行。 (如果不匹配,则该行的其余部分不会是 运行).
修改命令行,因为老实说,你还没有真正得到A
的用户名,直接改成A
根据需要在 FindStr
匹配中。因此,例如,如果您真的在寻找 Michael
的默认用户名,您将使用:
@%SystemRoot%\System32\reg.exe Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultUserName" 2>NUL | %SystemRoot%\System32\findstr.exe /IRC:"^ *DefaultUserName *REG_SZ *Michael$" 1>NUL && %SystemRoot%\System32\reg.exe Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "DefaultPassword" /T "REG_SZ" /D "1" /F 1>NUL
但是请记住您的 findstr /?
命令的输出。您会注意到某些字符是特殊字符,因此如果不转义某些特殊元字符,所有用户名字符串都可能无法正常工作。