Streszczenie
Po zastosowaniu aktualizacji zabezpieczeń kwietnia 2017 opisanych w wskazówki dotyczące aktualizacji zabezpieczeń firmy Microsoft CVE-2017-0160 , polecenia środowiska PowerShell w wersji 3.0 + stop komputer nie powiedzie się. Ponadto jeśli aplikacje należy użyć metod zarządzania energią, takich jak zamknięcie lub ponowny rozruch z klasy Win32_OperatingSystem i atrybut EnablePrivileges ustawiony na wartość true, może obserwować ten sam błąd. Zwracany jest komunikat o błędzie "Brak uprawnień".
Więcej informacji
Symptomy problemu 1
Klienci, którzy starają się wyłączyć lub ponownie uruchomić system, lokalnych lub zdalnych, używając polecenia stop komputer środowiska PowerShell w wersji 3.0 i nowszych, zostanie wyświetlony następujący błąd:
Stop komputer: Brak uprawnień.
Char linii: 1:1
+ stop komputer
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< nazwa_komputera >: String) [Stop komputer] ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Obejście problemu 1
Aby obejść ten problem, uruchom następujące polecenie "shutdown.exe", aby wykonać wyłączania i ponownego uruchamiania działania w systemach lokalnych i zdalnych:
shutdown.exe [-r] [-s] [-m \\computer]
Aby uzyskać więcej informacji i polecenia Pomoc, uruchom:
shutdown.exe -?
Symptomy problemu 2
Odbiorcy aplikacje za pomocą metod zarządzania energią, takich jak zamknięcie lub ponowny rozruch z klasy Win32_OperatingSystem i ustawić atrybut EnablePrivileges na wartość true, może obserwować ten sam błąd "Nie posiadanych uprawnień".
-
Przykład 1 (PowerShell) zwraca błąd "Brak uprawnień":
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()-
Przykład 2 (kod C#) zwraca błąd "Brak uprawnień":
[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); } }
-
Obejście problemu 2
-
Na przykład 1 (PowerShell):
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() -
Na przykład 2 (kod 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"]); } } } }
Rozwiązanie
Rozwiązanie problemu 1
Aby rozwiązać ten problem, należy zainstalować aktualizację w tabeli poniżej zgodnie z systemem.
System operacyjny |
Aktualizacja |
Windows Server 2008 |
Dla.NET Framework 2.0, zainstaluj aktualizację 4020511 Dla.NET Framework 4.5.2, zainstaluj aktualizację 4020507 Dla.NET Framework 4.6, zainstaluj aktualizację 4020503 |
Windows 7 i Windows Server 2008 R2 |
.NET Framework 3.5.1 instalacja aktualizacji 4020513 .NET Framework 4.5.2 Instalacja aktualizacji 4020507 Dla.NET Framework 4.6 lub 4.6.1, zainstaluj aktualizację 4020503 .NET Framework 4.6.2 Instalacja aktualizacji 4020500 |
Windows Server 2012 |
Dla.NET Framework 3.5, zainstaluj aktualizację 4020512 .NET Framework 4.5.2 Instalacja aktualizacji 4020506 .NET Framework 4.6 lub 4.6.1 instalacja aktualizacji 4020501 .NET Framework 4.6.2 Instalacja aktualizacji 4020498 |
Windows 8.1 i Windows Server 2012 |
Dla programu.NET Framework 3.5 instalacja aktualizacji 4020514 .NET Framework 4.5.2 Instalacja aktualizacji 4020505 .NET Framework 4.6 lub 4.6.1 instalacja aktualizacji 4020502 .NET Framework 4.6.2 Instalacja aktualizacji 4020499 |
Windows 10 RTM |
Instalacja aktualizacji 4019474 |
Windows 10 wersja 1511 |
Instalacja aktualizacji 4019473 |
Windows 10 wersja 1607 i systemu Windows Server 2016 |
Instalacja aktualizacji 4019472 |
Windows 10 wersja 1703 |
Instalacja aktualizacji 4016871 |
Rozwiązanie problemu 2
Aby rozwiązać ten problem, należy zainstalować aktualizację w tabeli poniżej zgodnie z systemem.
Wersja produktu |
Podgląd pakietu zbiorczego jakości KB |
---|---|
Aktualizacja systemu Windows 10 1703 (RS2) System Windows Server 2016 |
|
.NET Framework 3.5 |
|
.NET Framework 4.7 |
|
Aktualizacja systemu Windows 10 1607 System Windows Server 2016 |
|
.NET Framework 3.5 |
Catalog 4034661 |
.NET Framework 4.6.2 i ppkt 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.6.1, 4.6.2, 4.7 |
|
Windows Server 2012 |
|
.NET Framework 3.5 |
|
.NET Framework 4.5.2 |
|
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7 |
|
Windows 7 Windows Server 2008 R2 |
|
.NET Framework 3.5.1 |
|
.NET Framework 4.5.2 |
|
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7 |
|
Windows Server 2008 |
|
.NET Framework 2.0 |
|
.NET Framework 4.5.2 |
|
.NET Framework 4.6 |
Porady
Ten artykuł dotyczy następujących produktów, zgodnie z opisem w sekcji Produkty zagrożoneCVE-2017-0160:
Microsoft.NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1 4.6.2, 4.7 we wszystkich obsługiwanych wersjach systemu Windows uruchomionego programu PowerShell 3.0 i nowsze wersje.