Reboot: Neustart des Computers mit .NET (C#/VB) auslösen
Es gibt verschiedene Wege, einen Reboot des Windows-Systems mit C# oder Visual Basic auszulösen.
Lesezeit:
1 Min.
Von
- Dr. Holger Schwichtenberg
Um aus eigener Software heraus einen Neustart des Computers (Reboot) auszulösen, gibt es mehrere Optionen:
- ausfĂĽhren des Kommandozeilenwerkzeugs shutdown.exe mit der Option /r (ĂĽber Start eines Prozesses mit System.Diagnostics.Process)
- ausfĂĽhren des PowerShell-Commandlets restart-Computer (ĂĽber Start von powershell.exe mit System.Diagnostics.Process oder aber das Hosting der PowerShell im .NET-Prozess)
- ĂĽber die Funktion ExitWindowsEx aus dem Win32-API
- ĂĽber die Windows Management Instrumentation (WMI)-Klasse Win32_OperatingSystem (die es seit Windows 2000 fest ins Betriebssystem eingebaut gibt)
Ich finde den vierten Weg gut (u.a. weil ich ein WMI-Fan bin). Hier der Programmcode in C# (es ist eine Referenz auf die System.Management.dll – verfügbar ab .NET 1.0 – notwendig):
// Anstelle des Punktes (lokaler Rechner) auch Rechnername oder IP möglich
ManagementObject mo = new ManagementObject(@"\\.↵
\root\cimv2:Win32_OperatingSystem=@");
// Wichtig: Ohne diese Rechteerhöhung, wird der Reboot nicht möglich sein
mo.Scope.Options.EnablePrivileges = true;
try {
// Reboot-Methode ohne Parameter ausfĂĽhren
object ergebnis = mo.InvokeMethod("Reboot", new object[] { });
// Ergebnis auswerten
if (ergebnis == null || (uint)ergebnis > 0)
{ Console.WriteLine("Reboot nicht möglich."); }
else
{ Console.WriteLine("Reboot startet..."); } }
catch (Exception ex)
{ Console.WriteLine("Fehler: " + ex.Message); } ()