会话锁定时从 C#/Forms App 重启计算机

Reboot machine from C#/Forms App while session is locked

参考这个问题:.net - Reboot machine from a C#/WPF App

我正在尝试创建一个 c#/.net 应用程序,即使会话被锁定(即用户已登录,此应用程序是 运行,但会话被锁定)也可以重新启动机器。

我试过这个问题:System.Diagnostics.Process.Start("shutdown.exe", "-r -t 0");

但显然只有在会话解锁时才有效。此外,阅读此文后:MSDN - InitiateSystemShutdown Function 似乎 InitiateSystemShutdown 函数将显示系统关闭对话框,这似乎不符合我的目的。

还有其他方法吗?

ExitWindowsEx 函数完成了我想要做的事情。

使用:

    [DllImport("user32.dll", SetLastError = true)]
    public static extern int ExitWindowsEx(ExitWindows uFlags, ShutdownReason dwReason);

调整令牌权限并使用 uFlags 0x06(重启/强制)后。我也使用了 dwReason 0。无论会话是否被锁定,该函数都会重启机器。

here