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