Friday, June 23, 2023

Fehler „Privileg nicht gehalten“ mit PowerShell-Befehl „stop-computer“ und Energieverwaltungsmethoden in der Klasse „Win32_OperatingSystem“: Problemumgehung nach Sicherheitsupdates vom April 2017 von CVE-2017-0160 – Microsoft-Support

Zusammenfassung

Nachdem Sie die im Microsoft-Sicherheitsupdateleitfaden CVE-2017-0160 beschriebenen Sicherheitsupdates vom April 2017 angewendet haben, schlägt der Befehl „Stop-Computer" von PowerShell v3.0+ fehl. Wenn Anwendungen außerdem Energieverwaltungsmethoden wie Herunterfahren oder Neustarten aus der Klasse „Win32_OperatingSystem " verwenden und das Attribut „EnablePrivileges" auf „true" setzen, tritt möglicherweise derselbe Fehler auf. Es wird die Fehlermeldung „Privileg nicht gehalten" zurückgegeben.

Mehr Informationen

Symptome für Problem 1

Kunden, die versuchen, ein lokales oder Remote-System mit dem Befehl „stop-computer" in PowerShell v3.0 und höher auszuschalten oder neu zu starten, sehen die folgende Fehlermeldung:

stop-computer: Berechtigung nicht gehalten.

In Zeile:1 Zeichen:1

+ Stopp-Computer

+ ~~~~~~~~~~~~~

+ CategoryInfo: InvalidOperation: (<COMPUTERNAME> :String) [Stop-Computer], ManagementE

+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand

Problemumgehung für Problem 1

Um dieses Problem zu umgehen, führen Sie den folgenden Befehl „shutdown.exe" aus, um Abschalt- und Neustartvorgänge auf lokalen oder Remote-Systemen auszuführen:

Shutdown.exe [-r] [-s] [-m \\Computer]

Für weitere Informationen und Befehlshilfe führen Sie Folgendes aus:

Shutdown.exe -?

Symptome für Problem 2

Bei Kundenanwendungen, die Energieverwaltungsmethoden wie Herunterfahren oder Neustarten aus der Klasse „Win32_OperatingSystem" verwenden und das Attribut „EnablePrivileges" auf „true" setzen, tritt möglicherweise derselbe Fehler „Privilege nicht gehalten" auf.

  • Beispiel 1 (PowerShell) gibt den Fehler „Privilege nicht gehalten" zurück:
    $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()

    • Beispiel 2 (C#-Code) gibt den Fehler „Privilege nicht gehalten" zurück:
      [STAThread] static void Main(string[] args) { ManagementClass mgmtObject = new ManagementClass("Win32_OperatingSystem"); foreach (ManagementObject iterMgmtObject in mgmtObject.GetInstances()) { iterMgmtObject.Scope.Options.EnablePrivileges = true; iterMgmtObject.InvokeMethod("Reboot", null, null); } }

Problemumgehung für Problem 2

  • Für Beispiel 1 (PowerShell):
    $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot()

  • Für Beispiel 2 (C#-Code):
    Verwenden des Systems; mit System.Collections.Generic; mit System.Linq; Verwenden von System.Management; Verwenden von System.Text; Verwenden von System.Threading.Tasks; Namespace ConsoleApplication { public class Program { static void Main(string[] args) { var mgmtScope = new ManagementScope( ManagementPath.DefaultPath, new ConnectionOptions() { EnablePrivileges = true }); var mgmtClass = new ManagementClass(mgmtScope, new ManagementPath("Win32_OperatingSystem"), null); foreach (ManagementObject mgmtInst in mgmtClass.GetInstances()) { var mgmtCallResult = mgmtInst.InvokeMethod("Reboot", null, null); Console.Out.WriteLine("Reboot() Rückgabewert: {0}", mgmtCallResult["ReturnValue"]); } } } }

Auflösung

Lösung für Problem 1

Um dieses Problem zu beheben, installieren Sie das in der Tabelle unten aufgeführte Update entsprechend Ihrem System.

Betriebssystem

Aktualisieren

Windows Server 2008

Installieren Sie für .NET Framework 2.0 das Update 4020511

Installieren Sie für .NET Framework 4.5.2 das Update 4020507

Installieren Sie für .NET Framework 4.6 das Update 4020503

Windows 7 und Windows Server 2008 R2

Installieren Sie für .NET Framework 3.5.1 das Update 4020513

Installieren Sie für .NET Framework 4.5.2 das Update 4020507

Installieren Sie für .NET Framework 4.6 oder 4.6.1 das Update 4020503

Installieren Sie für .NET Framework 4.6.2 das Update 4020500

Windows Server 2012

Installieren Sie für .NET Framework 3.5 das Update 4020512

Installieren Sie für .NET Framework 4.5.2 das Update 4020506

Installieren Sie für .NET Framework 4.6 oder 4.6.1 das Update 4020501

Installieren Sie für .NET Framework 4.6.2 das Update 4020498

Windows 8.1 und Windows Server 2012 R2

Installieren Sie für .NET Framework 3.5 das Update 4020514

Installieren Sie für .NET Framework 4.5.2 das Update 4020505

Installieren Sie für .NET Framework 4.6 oder 4.6.1 das Update 4020502

Installieren Sie für .NET Framework 4.6.2 das Update 4020499

Windows 10 RTM

Installieren Sie das Update 4019474

Windows 10 Version 1511

Installieren Sie das Update 4019473

Windows 10 Version 1607 und Windows Server 2016

Installieren Sie das Update 4019472

Windows 10 Version 1703

Installieren Sie das Update 4016871

Lösung für Problem 2

Um dieses Problem zu beheben, installieren Sie das in der Tabelle unten aufgeführte Update entsprechend Ihrem System.

Produktversion

Vorschau der Qualitäts-Rollup-KB

Windows 10 Update 1703 (RS2)
Windows Server 2016

Katalog
4034674

.NET Framework 3.5

Katalog
4038788

.NET Framework 4.7

4034674

Windows 10 Update 1607
Windows Server 2016


.NET Framework 3.5

Katalog
4034661

.NET Framework 4.6.2 und 4.7

Katalog
4034658

Windows 8.1
Windows RT 8.1
Windows Server 2012 R2

Katalog
4035038

.NET Framework 3.5

4033997

.NET Framework 4.5.2

4033991

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033989

Windows Server 2012

Katalog
4035037

.NET Framework 3.5

4033995

.NET Framework 4.5.2

4033992

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033988

Windows 7
Windows Server 2008 R2

Katalog
4035036

.NET Framework 3.5.1

4033996

.NET Framework 4.5.2

4033993

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033990

Windows Server 2008

Katalog
4035039

.NET Framework 2.0

4033994

.NET Framework 4.5.2

4033993

.NET Framework 4.6

4033990

Gilt für

Dieser Artikel gilt für die folgenden Produkte, wie im Abschnitt „Betroffene Produkte" von CVE-2017-0160 beschrieben:

Microsoft .NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 auf allen unterstützten Windows-Versionen mit PowerShell 3.0 und höheren Versionen.

No comments:

Post a Comment