在Windows 7脚本中,如何确定当前系统关闭是否实际上是重新启动?

Eri*_*rik 5 vbscript powershell reboot shutdown windows-7

我使用组策略编辑器,它是Windows 7(也是Windows XP)的一部分,用于运行所谓的关闭脚本,每次关闭或重新启动系统时都会自动执行该脚本.我的问题是:我需要在我的脚本中知道用户是否选择关闭系统,或者他是否选择了重启.这两个操作都会使Windows运行关闭脚本,但是如何在该脚本执行期间确定实际执行了哪个操作?

如果系统当前执行关机或重启,有没有办法知道,在关机期间?

jon*_*n Z 8

pre-vista系统上,您可以查询注册表:

在"关闭Windows"对话框中的当前用户的列表中,存储了最近选择的设置的" 关闭设置" DWORD HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer.

更新的系统上,您可以在关闭脚本中查询System Eventlog,如下所示:

$systemstateentry = get-eventlog -LogName system -Source User32 | ?{$_.eventid -eq 1074} | select -first 1

switch -regex ($systemstateentry.message) 
    { 
        ".*restart.*" {"restart"} 
        ".*power off.*" {"power off"} 
        default {"unknown"}
    }
Run Code Online (Sandbox Code Playgroud)