C# 系统锁定时,关机命令不起作用

C# 系统锁定时,关机命令不起作用,c#,windows,C#,Windows,(有一个非常类似的话题从未解决:) 这是我的代码 for (int i = 0; i < 5; i++) { Thread.Sleep(10000); Console.WriteLine("Hi"); Process.Start("shutdown", "/s /t 0"); } for(int i=0;i

(有一个非常类似的话题从未解决:)

这是我的代码

for (int i = 0; i < 5; i++)
{
    Thread.Sleep(10000);
    Console.WriteLine("Hi");
    Process.Start("shutdown", "/s /t 0");
}
for(int i=0;i<5;i++)
{
睡眠(10000);
控制台。WriteLine(“Hi”);
过程。启动(“关闭”,“s/t 0”);
}

如果我锁定了我的系统,关机进程将不起作用,否则工作正常。当我在2分钟后解锁系统时,它只显示hi(5次)。

我认为关机命令需要提升权限,因此无论您是按自己的方式调用还是使用API,我都希望需要UAC提示。你没有指定你使用的是哪个版本的Windows,但我认为假设UAC存在是安全的

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

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


我希望其他人能为您提供一个更简单的解决方案。

您是否尝试过shutdown.exe的其他参数,如
/p
和/或
/f

您可以阅读
shutdown.exe
的输出以找到它给您的错误。当我的系统处于活动状态(未锁定)时,它工作正常。您尝试过/f(强制)吗选择?否决票!为什么?我在这个论坛上搜索这个问题,只发现了一个未解决的问题。如果我在这里得到了解决方案,它可能会帮助其他人。是的,尝试过/f。它正在注销系统,而不是关机。谢谢你的回复。如果问题与权限有关,那么为什么在系统处于活动状态(未锁定)时它仍在工作?是的,你说得很对。我想当您在未锁定的情况下运行UAC时,您可能会看到任何UAC提示。我怀疑这基本上仍然是正确的想法,如果您具有管理员权限或您正在当前交互式会话中运行,则可能允许关机-但在这种情况下两者都不适用。/f=强制应用程序关机,我不明白。但在我的情况下,它只是注销我的系统,而不是强制关机。我甚至在我的同事系统中尝试过。