我正在撰寫一個腳本來檢索“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”鍵。我作業的公司正在更改所有密碼,我不想手動完成所有操作。
uj5u.com熱心網友回復:
鑒于您在評論中所述的其他要求,這應該添加所需的密碼字串值資料,僅當現有的默認用戶名完全不區分大小寫字串時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
您在這里可能不理解的唯一一件事是條件運算子&&。有兩個條件運算子,&&and ||,前者表示前一條命令報成功,后者表示前一條命令報不成功。因此,在上述情況下,它的作用是findstr.exe查找以一個或多個空格字符開頭的行,然后是不區分大小寫的 string DefaultUserName,然后是一個或多個空格,然后是不區分大小寫的字串,REG_SZ然后是一個或多個空格,并以不區分大小寫的 string 結尾A。要了解有關FindStr命令實用程式選項的更多資訊,請打開命令提示符視窗,鍵入findstr /?并按ENTER鑰匙。如果回傳的字串匹配,則通過 StdOut 將其列印到控制臺視窗,因此我已將該列印重定向到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 /?命令的輸出。您會注意到某些字符是特殊的,因此如果不轉義某些特殊的元字符,則所有用戶名字串都可能無法使用。
uj5u.com熱心網友回復:
只需在實際命令列中加上引號:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /s
沒有它們,空格 atWindows NT會導致語法錯誤,因為它被視為NT\CurrentVersion\Winlogon傳遞給reg querycommand 的(第三個)引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383450.html
