アプリケーションからシャットダウンや再起動するには、Shutdown.exeを起動すればよいでしょう。
引数は
-r でreboot
-s でshutdown
-t x でx秒後に動作します
サンプルコード
private void RebootButton_Click(object sender, RoutedEventArgs e)
{
try
{
// Rebootする
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "shutdown.exe";
psi.Arguments = "-r -t 0"; // reboot
// "-s -t 0" shutdown
psi.CreateNoWindow = true;
Process p = Process.Start(psi);
}
catch(Exception)
{
}
}