修改VBS自动登录脚本以解决域账户重启后因网络未初始化导致的登录失败问题
修改VBS自动登录脚本以解决域账户重启后因网络未初始化导致的登录失败问题
我完全懂你的困扰——本地账户自动登录一切正常,但域账户总弹出“找不到登录服务器”的错误,本质原因就是系统重启后网络服务还没完全就绪,Winlogon进程就急着连域控制器了。咱们只需要给自动登录流程加个60秒的延迟,让网络有足够时间初始化,问题就能解决。
下面是修改后的完整脚本,我标注了新增的关键代码:
Set objFSO = CreateObject("Scripting.FileSystemObject") set objShell = wscript.CreateObject("wscript.shell") const HKEY_LOCAL_MACHINE = &H80000002 sUserName = InputBox("enter user name") sPassword = InputBox("enter the password for the user") Set oTS = objFSO.OpenTextFile("path of my txt file") Do Until oTS.AtEndOfStream strComputer = oTS.ReadLine On Error Resume Next Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\default:StdRegProv") sRegPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" ' 启用自动登录 oReg.SetStringValue HKEY_LOCAL_MACHINE,sRegPath,"AutoAdminLogon",1 ' 设置登录用户名 oReg.SetStringValue HKEY_LOCAL_MACHINE,sRegPath,"DefaultUserName",sUserName ' 设置登录密码 oReg.SetStringValue HKEY_LOCAL_MACHINE,sRegPath,"DefaultPassword",sPassword ' 新增:设置自动登录延迟60秒(给网络初始化留足时间) oReg.SetStringValue HKEY_LOCAL_MACHINE,sRegPath,"AutoLogonDelay","60" ' 远程重启目标电脑(调整参数确保立刻重启,更规范) objShell.Run "C:\Windows\System32\shutdown.exe /m \\" & strComputer & " /r /t 0" Loop MsgBox ("Successfully Logged On values Set") oTS.Close WScript.Quit
关键修改说明:
- 新增了
AutoLogonDelay注册表项,值设为60(单位是秒),让Winlogon在系统重启后等待1分钟再执行自动登录流程 - 微调了shutdown命令参数,用
/t 0确保电脑立刻重启(原参数也能工作,只是这个写法更标准)
额外注意事项:
AutoLogonDelay是从Windows Vista开始支持的注册表项,要确保目标电脑系统版本符合要求- 域账户必须拥有目标电脑的本地登录权限,否则就算网络就绪也会登录失败
- 运行这个脚本需要管理员权限,因为要修改
HKEY_LOCAL_MACHINE下的注册表项
备注:内容来源于stack exchange,提问作者Muhammad Zubair Mughal
相关产品推荐
相关产品推荐

