会话锁定时从 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。无论会话是否被锁定,该函数都会重启机器。
参考这个问题:.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。无论会话是否被锁定,该函数都会重启机器。