Súhrn
Po nainštalovaní aktualizácie zabezpečenia apríla 2017 podľa Microsoft update pokyny CVE-2017-0160 , príkaz prostredia PowerShell verzie 3.0 + zastaviť počítač zlyhá. Okrem toho ak aplikácie pomocou metódy riadenia napájania, ako vypnúť alebo reštartovať z trieda Win32_OperatingSystem a nastaviť atribút EnablePrivileges True uvádzajú rovnaké zlyhania. Chybové hlásenie "Nie je držiteľom oprávnenia".
Ďalšie informácie
Príznaky problému 1
Zákazníci, ktorí skúste vypnúť alebo reštartovať systém lokálny alebo vzdialený, pomocou príkazu stop počítača na PowerShell verzie 3.0 alebo novšej zobrazí nasledujúca chyba:
zastaviť počítač: oprávnenie nie je udelené.
V riadku: 1 char: 1
+ zastaviť počítač
+ ~~~~~~~~~~~~~
Char: InvalidOperation: (< názov počítača >: reťazec) [Stop-Computer] ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Riešenie problému 1
Tento problém obísť, spustite príkaz "shutdown.exe" vypínanie a reštartovanie operácie na lokálnej alebo vzdialenej:
Shutdown.exe [-r] [-s] [-m \\computer]
Ďalšie informácie a príkaz Pomocníka, spustite:
shutdown.exe -?
Príznaky problému 2
Zákazník aplikácie pomocou metódy riadenia napájania, ako vypnúť alebo reštartovať z trieda Win32_OperatingSystem a nastaviť atribút EnablePrivileges True, pozorovať rovnaké "Oprávnení nie rozhodol" chyba.
-
Príklad 1 (PowerShell) vráti chybu "Oprávnenie nie je udelené":
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()-
Príklad 2 (kód C#) vráti chybu "Oprávnenie nie je udelené":
[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); } }
-
Riešenie problému 2
-
Príklad 1 (PowerShell):
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() -
Príklad 2 (C# kód):
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"]); } } } }
Riešenie
Riešenie problému 1
Ak chcete vyriešiť tento problém, nainštalujte aktualizáciu v tabuľke nižšie podľa systému.
Operačný systém |
Aktualizácia |
Windows Server 2008 |
Pre rozhranie .NET Framework 2.0, nainštalujte aktualizáciu 4020511 Pre rozhranie .NET Framework 4.5.2, nainštalujte aktualizáciu 4020507 Pre rozhranie .NET Framework 4.6, nainštalujte aktualizáciu 4020503 |
Windows 7 a Windows Server 2008 R2 |
.NET Framework 3.5.1, nainštalujte aktualizáciu 4020513 .NET Framework 4.5.2, nainštalujte aktualizáciu 4020507 .NET Framework 4.6 alebo 4.6.1, nainštalujte aktualizáciu 4020503 .NET Framework 4.6.2, nainštalujte aktualizáciu 4020500 |
Windows Server 2012 |
Pre rozhranie .NET Framework 3.5, nainštalujte aktualizáciu 4020512 .NET Framework 4.5.2, nainštalujte aktualizáciu 4020506 .NET Framework 4.6 alebo 4.6.1, nainštalujte aktualizáciu 4020501 .NET Framework 4.6.2, nainštalujte aktualizáciu 4020498 |
Windows 8.1 a Windows Server 2012 R2 |
.NET Framework 3.5, nainštalujte aktualizáciu 4020514 .NET Framework 4.5.2, nainštalujte aktualizáciu 4020505 .NET Framework 4.6 alebo 4.6.1, nainštalujte aktualizáciu 4020502 .NET Framework 4.6.2, nainštalujte aktualizáciu 4020499 |
Windows 10 RTM |
Nainštalujte aktualizáciu 4019474 |
Windows 10 verzie 1511 |
Nainštalujte aktualizáciu 4019473 |
Windows 10 verzií 1607 a Windows Server 2016 |
Nainštalujte aktualizáciu 4019472 |
Windows 10 verzií 1703 |
Nainštalujte aktualizáciu 4016871 |
Riešenie problému 2
Ak chcete vyriešiť tento problém, nainštalujte aktualizáciu v tabuľke nižšie podľa systému.
Verzia produktu |
Ukážka kvality súhrnnej KB |
---|---|
Windows 10 Aktualizácia 1703 (RS2) Windows Server 2016 |
|
.NET framework 3.5 |
|
.NET framework 4.7 |
|
Windows 10 Aktualizácia 1607 Windows Server 2016 |
|
.NET framework 3.5 |
Catalog 4034661 |
Rozhranie .NET framework 4.6.2 4.7 |
Catalog 4034658 |
Windows 8.1 Windows RT 8.1 Windows Server 2012 R2 |
|
.NET framework 3.5 |
|
.NET framework 4.5.2 |
|
.NET framework 4.6, 4.7, 4.6.1, 4.6.2 |
|
Windows Server 2012 |
|
.NET framework 3.5 |
|
.NET framework 4.5.2 |
|
.NET framework 4.6, 4.7, 4.6.1, 4.6.2 |
|
Windows 7 Windows Server 2008 R2 |
|
Rozhranie .NET framework 3.5.1 |
|
.NET framework 4.5.2 |
|
.NET framework 4.6, 4.7, 4.6.1, 4.6.2 |
|
Windows Server 2008 |
|
.NET framework 2.0 |
|
.NET framework 4.5.2 |
|
.NET framework 4.6 |
Vzťahuje sa na
Tento článok sa vzťahuje na nasledujúce produkty opísané v časti Vplyv produktovCVE-2017-0160:
Microsoft .NET Framework 2.0, 3.5 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 na všetky podporované verzie systému Windows PowerShell 3.0 a v novších verziách.