系统锁定时,关机命令无效

时间:2015-09-15 11:17:50

标签: c# windows

(有一个非常类似的主题从未得到解决:here

这是我的代码

for (int i = 0; i < 5; i++)
{
    Thread.Sleep(10000);
    Console.WriteLine("Hi");
    Process.Start("shutdown", "/s /t 0");
}

如果我锁定了我的系统,则关机过程无效,否则运行正常。当我在2分钟后解锁我的系统时,它只显示hi(5次)。

2 个答案:

答案 0 :(得分:0)

我认为shutdown命令需要提升权限,因此无论您是按照自己的方式调用还是使用API​​,我都希望能够提供UAC提示。您没有指定您所使用的Windows版本,但我认为可以安全地假设UAC存在。

系统锁定后,无法显示UAC提示,并在一段时间后超时。因此,如果没有交互式用户的明确许可,您的关机就无法继续。

我认为,为了实现您的目标,您需要创建一个以高权限运行的Windows服务,并让它调用正确的API来关闭机器。然后,您可以让正常的流程与您的服务进行通信,并告诉它进行关闭。

我希望其他人可以为您提供更简单的解决方案。

答案 1 :(得分:0)

您是否尝试过像shutdown /p和/或/f这样的其他参数?