(有一个非常类似的主题从未得到解决:here)
这是我的代码
for (int i = 0; i < 5; i++)
{
Thread.Sleep(10000);
Console.WriteLine("Hi");
Process.Start("shutdown", "/s /t 0");
}
如果我锁定了我的系统,则关机过程无效,否则运行正常。当我在2分钟后解锁我的系统时,它只显示hi(5次)。
答案 0 :(得分:0)
我认为shutdown命令需要提升权限,因此无论您是按照自己的方式调用还是使用API,我都希望能够提供UAC提示。您没有指定您所使用的Windows版本,但我认为可以安全地假设UAC存在。
系统锁定后,无法显示UAC提示,并在一段时间后超时。因此,如果没有交互式用户的明确许可,您的关机就无法继续。
我认为,为了实现您的目标,您需要创建一个以高权限运行的Windows服务,并让它调用正确的API来关闭机器。然后,您可以让正常的流程与您的服务进行通信,并告诉它进行关闭。
我希望其他人可以为您提供更简单的解决方案。
答案 1 :(得分:0)
您是否尝试过像shutdown /p
和/或/f
这样的其他参数?