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 を直接呼び出すことができるようにしたいと考えています。