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

Katalog 4034674

.NET Framework 3.5

Katalog 4038788

.NET Framework 4.7

4034674

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.1Windows Server 2012 R2

Catalog 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

Catalog 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

Catalog 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

Catalog 4035039

.NET Framework 2.0

4033994

.NET Framework 4.5.2

4033993

.NET Framework 4.6

4033990

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.

 

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.