我正在尝试让 Windows 7 机器从 C# WPF 应用程序重新启动。为此,我添加了以下代码(我使用了枚举,但为了保持代码简短,我只是在此处插入常量):
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ExitWindowsEx(ExitWindows uFlags, ShutdownReason dwReason);
public static void Reboot() {
ExitWindowsEx(0x02, 0x0)
}
在 Windows 7 机器上,这绝对没有任何作用(无论如何对我来说)。将 0x2(重新启动)更改为 0x0(注销)确实会使代码注销当前用户,但重新启动代码似乎不起作用。
使用 GetLastError API 调用也没有多大作用。它只是说明该功能已成功完成。
现在我只是通过使用 /r /f 调用关闭命令来应对,但我更希望能够直接从我的应用程序调用 Windows API,因此非常感谢任何帮助。