Souhrn
Po instalaci aktualizace zabezpečení duben 2017 popsaných v zásadách aktualizace zabezpečení společnosti Microsoft CVE-2017-0160 , že PowerShell v3.0 + zastavení počítače se příkaz nezdaří. Navíc pokud aplikace použijte metody správy napájení, jako je například vypnutí nebo restartování počítače ze třídy Win32_OperatingSystem , nastavte atribut EnablePrivileges na hodnotu true může sledují stejné chyby. Je vrácena chybová zpráva "Oprávnění není uděleno".
Další informace
Příznaky problému 1
Zákazníci, kteří pokusu o vypnutí nebo restartování systému, místní nebo vzdálené, pomocí příkazu stop počítače v prostředí PowerShell verze 3.0 a novější, zobrazí následující chybová zpráva:
zastavení počítače: není držitel oprávnění.
Na řádku: 1 char: 1
+ počítače stop
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< název_počítače >: řetězec) [Stop počítač] ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Řešení pro problém 1
Chcete-li tento problém vyřešit, spusťte následující příkaz "shutdown.exe" k provedení napájení dolů a restartování operace v místním nebo vzdáleném systému:
Shutdown.exe [-r] [-s] [-m \\computer]
Další informace a příkaz nápovědy, spusťte:
shutdown.exe -?
Příznaky problému 2
Zákazník aplikace pomocí metody správy napájení, jako je například vypnutí nebo restartování počítače ze třídy Win32_OperatingSystem a nastavte atribut EnablePrivileges na hodnotu true, může sledovat stejná chyba "Oprávnění nejsou uchovávány".
-
Příklad 1 (PowerShell) vrátí chybu "Oprávnění není uděleno":
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()-
Příklad 2 (kód jazyka C#) vrátí chybu "Oprávnění není uděleno":
[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); } }
-
Řešení pro problém 2
-
Pro příklad 1 (PowerShell):
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() -
Příklad 2 (kód jazyka C#):
using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; using 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() Return Value: {0}", mgmtCallResult["ReturnValue"]); } } } }
Řešení
Řešení pro problém 1
Chcete-li vyřešit tento problém, nainstalujte aktualizaci v tabulce níže podle systému.
Operační systém |
Aktualizace |
Windows Server 2008 |
Pro rozhraní.NET Framework 2.0, nainstalujte aktualizaci 4020511 Pro rozhraní.NET Framework 4.5.2, nainstalujte aktualizaci 4020507 Pro rozhraní.NET Framework 4.6, instalaci aktualizace 4020503 |
Windows 7 a Windows Server 2008 R2 |
Pro rozhraní.NET Framework 3.5.1 Nainstalujte aktualizaci 4020513 Pro rozhraní.NET Framework 4.5.2 nainstalujte aktualizaci 4020507 Pro rozhraní.NET Framework 4.6 nebo 4.6.1, nainstalujte aktualizaci 4020503 Pro rozhraní.NET Framework 4.6.2 nainstalujte aktualizaci 4020500 |
Windows Server 2012 |
Pro rozhraní.NET Framework 3.5, nainstalujte aktualizaci 4020512 Pro rozhraní.NET Framework 4.5.2 nainstalujte aktualizaci 4020506 Rozhraní.NET Framework 4.6 nebo 4.6.1 Nainstalujte aktualizaci 4020501 Pro rozhraní.NET Framework 4.6.2 nainstalujte aktualizaci 4020498 |
Windows 8.1 a Windows Server 2012 R2 |
Rozhraní.NET Framework 3.5 instalace aktualizace 4020514 Pro rozhraní.NET Framework 4.5.2 nainstalujte aktualizaci 4020505 Rozhraní.NET Framework 4.6 nebo 4.6.1 Nainstalujte aktualizaci 4020502 Pro rozhraní.NET Framework 4.6.2 nainstalujte aktualizaci 4020499 |
Windows 10 RTM |
Nainstalujte aktualizaci 4019474 |
Windows 10 verze 1511 |
Nainstalujte aktualizaci 4019473 |
Windows 10 verze 1607 a Windows Server 2016 |
Nainstalujte aktualizaci 4019472 |
Windows 10 verze 1703 |
Nainstalujte aktualizaci 4016871 |
Řešení pro problém 2
Chcete-li vyřešit tento problém, nainstalujte aktualizaci v tabulce níže podle systému.
Verze produktu |
Náhled kvality kumulativní KB |
---|---|
Aktualizace systému Windows 10 1703 (RS2)
|
|
Rozhraní.NET Framework 3.5 |
|
Rozhraní.NET Framework 4.7 |
|
Aktualizace systému Windows 10 1607
|
|
Rozhraní.NET Framework 3.5 |
Catalog
|
Rozhraní.NET Framework 4.6.2 a 4.7 |
Catalog
|
Windows 8.1
|
|
Rozhraní.NET Framework 3.5 |
|
Rozhraní.NET Framework 4.5.2 |
|
Rozhraní.NET Framework 4.6 a 4.6.1, 4.6.2, 4.7 |
|
Windows Server 2012 |
|
Rozhraní.NET Framework 3.5 |
|
Rozhraní.NET Framework 4.5.2 |
|
Rozhraní.NET Framework 4.6 a 4.6.1, 4.6.2, 4.7 |
|
Windows 7
|
|
Rozhraní.NET Framework 3.5.1 |
|
Rozhraní.NET Framework 4.5.2 |
|
Rozhraní.NET Framework 4.6 a 4.6.1, 4.6.2, 4.7 |
|
Windows Server 2008 |
|
Rozhraní.NET Framework 2.0 |
|
Rozhraní.NET Framework 4.5.2 |
|
Rozhraní.NET Framework 4.6 |
Platí pro
Tento článek se vztahuje na následující výrobky, jak je popsáno v části ChybuCVE-2017-0160:
Microsoft rozhraní.NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 na všechny podporované verze systému Windows, spuštění prostředí PowerShell 3.0 a novějších verzích.