【发布时间】:2022-01-17 23:50:58
【问题描述】:
我正在编写一个脚本来检索“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
但我不断收到语法错误。我是编码初学者,感谢所有帮助。
最终目标是有一个输入输出表来根据用户名自动更改“DefaultPassword”键。我工作的公司正在更改所有密码,我不想全部手动完成。
【问题讨论】:
-
您需要保护注册表子项中的空间,使用双引号,即
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon".,对于reg.exe,可以缩短为"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"。你也不应该使用惰性代码来搜索和假设路径和扩展,而不是使用reg,使用%SystemRoot%\System32\reg.exe。 -
我已将该行更改为
%SystemRoot%\System32\reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /k /t REG_SZ,但没有成功。 -
你为什么现在使用
/K /T REG_SZ?此外,据我从笔记等中得知,在该键下并不总是有一个名为DefaultUserName的值,因此可能尚未将特定用户名定义为默认用户,和/或只有一个用户帐户。 -
我认为我需要更具体地纠正我的语法错误,我错了。我将行更改为
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName,它返回所需的信息,但继续下一步。我想将该查询用作 if/then 语句的输入(即,如果“DefaultUserName”为“A”,则将“DefaultPassword”更改为“1”)。公司对这些机器进行映像的方式,它们都在 Winlogon 键中具有这两个字符串。 -
试试这样的 oneliner:
@%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。仅当默认用户名恰好是不区分大小写的字符串A时,才应添加所需的密码设置。请注意,这肯定需要以提升的权限运行。
标签: batch-file registry