嗨,我有一个始终运行在后面的监视脚本(带有winforms gui)。 不幸的是,当用户尝试手动关闭计算机时会引起用户“这个应用程序阻止Windows关机”屏幕。使用Powershell检测系统关机
所以我需要一个可靠方式来启动关机时自动关闭脚本。
我想订阅的SessionEnding - 和SessionEnded事件,但没有奏效:
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action { Exitfunction }
UPDATE:
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnded" -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
Register-WmiEvent -Class win32_computerShutdownEvent -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
我说:此刻 它像这样一个消息框来查看这些事件中的一个事实上是否会触发,但也许由动作脚本块执行的代码有问题。没有运气。 当我尝试关闭Windows 8.1系统时,这些事件都不会发生在中。 有没有错误里面的事件,当我读取他们的工作。国家在所有这些“未开始”。
任何想法为什么?
可能重复[Powershell窗口阻止关机](http://stackoverflow.com/questions/10174075/powershell-window-preventing-shutdown) –
这就是我发布自己以上同样的解决方案。它不起作用,至少不是每次。不幸的是,我不能说为什么它不起作用,所以我正在寻找替代解决方案,如果有的话。 – Rob
嗯,没有。不是。链接的帖子包含的代码明显多于您在此发布的代码,并且还包括注册第二个活动。你应该仔细阅读它。 (它也被接受,这通常意味着提出问题的用户找到了解决方案。) –