![Windows XP](https://linux22.com/image/1309104/Windows%20XP.png)
当我从主机 VM 服务器向 Windows XP 客户机发出 ACPI 关机命令时,我希望 Windows 关闭。
问题是,Windows 总是想问一些问题,而不是直接关机。我需要可靠的关机,无论正在运行或发生什么,这样我就可以从主机自动关机。但我希望它尽可能优雅,而不是直接拔掉电源插头。
一些问题:
如果用户已登录,ACPI 关闭会导致出现一个框,提示“在其他用户登录时,您确定要关闭吗?”这会阻止关闭,直到有人连接到计算机并单击“是”。在这种情况下,它应该尽力优雅地注销所有用户,必要时使用强制,然后关闭而不进行升级。
繁忙或无响应的程序或要求保存数据的程序可能会阻止 Windows 关闭,直到用户回答提示。这应该尝试保存数据,等待大约 30 秒以处理无响应的程序,但对于顽固的程序应该采取积极措施。“不,时间到了!3、2、1,再见!”
是否有一个注册表设置可以更改:
ACPI_Shutdown: "Shut down if Windows feels like it"
到
ACPI_Shutdown: "Just do it. Kill programs, bump users, try to be graceful about it, but when I come back, I expect you to be off."
这应该响应 ACPI 关机命令,而不是 Windows 上的脚本,除非该脚本由 ACPI 电源按钮触发。我希望可以通过注册表选项来更改这一点。
答案1
shutdown -s -t 0
如果您以某种方式远程进入虚拟机并发出一个无需提示用户即可开始关机的命令,情况可能会更好。
您可以使用 Sysinternal 的 PsExec 从脚本或批处理文件中执行此操作。
或者,您可以向 VM 添加虚拟串行端口,启用 Windows XP 特殊管理控制台,然后通过 SAC 发出命令。通过脚本/批处理文件向 SAC 发出命令会更复杂,但即使 XP 实例的网络不工作,您也可以执行关机。
更新:这可能是 Vista/7 中的新功能 - 看起来该shutdown
命令有一个/p
标志,根据命令帮助“关闭本地计算机,没有超时或警告”。
因此尝试一下 - 没关系,刚刚跳到我的 xp 机器上,它没有 /p 选项......shutdown -s -p -f
,看看你会得到什么。
答案2
对于 Windows XP,我在 Ubuntu 主机上使用以下命令:
VBoxManage 客户控制“WinXPVM”执行--图像“C:\Windows\system32\shutdown.exe”--用户名将用户名放在这里--密码将密码放在这里---s -f -t 10
最后一个参数是实际关机开始前的时间 - 如果你希望它立即启动,你可以将其更改为 -t 0
希望这对任何人都有帮助:)
答案3
似乎有一些注册表、组策略值允许 Windows XP/7 处理 ACPI PowerDown 事件,而无需与操作系统进行额外交互。可能还需要确保控制面板/电源选项设置为电源按钮关机,并且显示器睡眠功能已禁用。
Windows XP
添加/设置以下注册表项/值
[DWORD] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\shutdownwithoutlogon=1
[DWORD] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\ShutdownWarningDialogTimeout=1
如果警告对话框没有超时,可以添加以下内容(警告 *)
[DWORD] HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Error Message Instrument\EnableDefaultReply=1
*这将导致 Windows 自动回复其他对话框,例如强制活动用户注销
Windows 7的
添加/设置以下组策略键/值
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Shutdown: Allow system to be shut down without having to log on=Enabled
Computer Configuration\Administrative Templates\System\Display Shutdown Event Tracker=Disabled