Riepilogo
Dopo avere applicato gli aggiornamenti della protezione di aprile 2017 descritti nella Guida di aggiornamento di protezione Microsoft 2017-CVE-0160 , il comando di interruzione a computer PowerShell v 3.0 + non riesce. Inoltre, se applicazioni utilizzano i metodi di gestione dell'alimentazione, ad esempio l'arresto o riavvio del sistema, dalla classe Win32_OperatingSystem e impostare l'attributo EnablePrivileges su true, essi possono osservare l'errore stesso. Viene restituito un messaggio di errore "Privilegio non disponibile".
Ulteriori informazioni
Sintomi per problema 1
I clienti che tenta di spegnere o riavviare un sistema locale o remoto, utilizzando il comando stop a computer su PowerShell 3.0 e versioni successive, verranno visualizzato il seguente errore:
computer-Stop: privilegio non disponibile.
Char riga: 1:1
+ stop-computer
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< nomecomputer >: stringa) [Computer-Stop], ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Soluzione per problema 1
Per risolvere questo problema, eseguire il seguente comando di "shutdown.exe" per l'esecuzione di spegnere e riavviare le operazioni su sistemi locali o remoti:
Shutdown.exe [-r] [-s] [-m \\computer]
Per ulteriori informazioni e i comandi della Guida, eseguire:
shutdown.exe -?
Sintomi per problema 2
Cliente le applicazioni utilizzando i metodi di gestione dell'alimentazione, ad esempio l'arresto o riavvio del sistema, dalla classe Win32_OperatingSystem e impostare l'attributo EnablePrivileges su true, possono osservare lo stesso errore "Non privilegio".
-
Esempio 1 (PowerShell) restituisce un errore di "Privilegio non disponibile": $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()
-
Esempio 2 (codice C#) restituisce un errore di "Privilegio non disponibile": [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); } }
-
Soluzione per problema 2
-
Ad esempio 1 (PowerShell): $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot()
-
Ad esempio 2 (codice 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"]); } } } }
Risoluzione
Risoluzione di problema 1
Per risolvere questo problema, installare l'aggiornamento della tabella di sotto del sistema in uso.
|
Sistema operativo |
Aggiornamento |
|
Windows Server 2008 |
Per il.NET Framework 2.0 installare l'aggiornamento 4020511 Per il.NET Framework 4.5.2, installare l'aggiornamento 4020507 Per il 4.6.NET Framework, installare l'aggiornamento 4020503 |
|
Windows 7 e Windows Server 2008 R2 |
Per installare il.NET Framework 3.5.1, aggiornare 4020513 Per installare il.NET Framework 4.5.2, aggiornare 4020507 Per il.NET Framework 4.6 o 4.6.1, installare l'aggiornamento 4020503 Per installare il.NET Framework 4.6.2, aggiornare 4020500 |
|
Windows Server 2012 |
Per il.NET Framework 3.5 installato l'aggiornamento 4020512 Per installare il.NET Framework 4.5.2, aggiornare 4020506 Per il 4.6 di.NET Framework o 4.6.1, installazione dell'aggiornamento 4020501 Per installare il.NET Framework 4.6.2, aggiornare 4020498 |
|
Windows 8.1 e Windows Server 2012 R2 |
Per.NET Framework 3.5, installare aggiornamento 4020514 Per installare il.NET Framework 4.5.2, aggiornare 4020505 Per il 4.6 di.NET Framework o 4.6.1, installazione dell'aggiornamento 4020502 Per installare il.NET Framework 4.6.2, aggiornare 4020499 |
|
RTM di Windows 10 |
Installazione aggiornamento 4019474 |
|
10 di Windows versione 1511 |
Installazione aggiornamento 4019473 |
|
10 di Windows versione 1607 e Windows Server 2016 |
Installazione aggiornamento 4019472 |
|
10 di Windows versione 1703 |
Installazione aggiornamento 4016871 |
Risoluzione di problema 2
Per risolvere questo problema, installare l'aggiornamento della tabella di sotto del sistema in uso.
|
Versione del prodotto |
Anteprima di qualità cumulativo KB |
|---|---|
|
Aggiornamento di Windows 10 1703 (2) Windows Server 2016 |
|
|
.NET Framework 3.5 |
|
|
.NET Framework 4.7 |
|
|
Aggiornamento di Windows 10 1607 Windows Server 2016 |
|
|
.NET Framework 3.5 |
Catalog 4034661 |
|
.NET Framework 4.6.2 e 4.7 |
Catalog 4034658 |
|
Windows 8.1 Windows RT 8.1Windows Server 2012 R2 |
|
|
.NET Framework 3.5 |
|
|
.NET Framework 4.5.2 |
|
|
.NET Framework, 4.6, 4.6.1 e 4.6.2 4.7 |
|
|
Windows Server 2012 |
|
|
.NET Framework 3.5 |
|
|
.NET Framework 4.5.2 |
|
|
.NET Framework, 4.6, 4.6.1 e 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 e 4.6.2 4.7 |
|
|
Windows Server 2008 |
|
|
.NET Framework 2.0 |
|
|
.NET Framework 4.5.2 |
|
|
.NET Framework 4.6 |
Si applica a
In questo articolo si applica ai seguenti prodotti, come descritto nella sezione Prodotti interessati del 2017-CVE-0160:
Microsoft.NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 su tutte le versioni supportate di Windows in esecuzione di PowerShell 3.0 e versioni successive.