Sammendrag
Når du har brukt April 2017 sikkerhetsoppdateringene som er beskrevet i Microsoft security update veiledning CVE-2017 0160 , PowerShell v3.0 + Stopp datamaskin - kommandoen mislykkes. Hvis programmer bruke power management metoder, for eksempel avslutning eller omstart, fra klassen Win32_OperatingSystem og angi EnablePrivileges -attributtet til true, kan de også hende du ser den samme feilen. Feilmeldingen "Ikke privilegium" returneres.
Mer informasjon
Symptomer på problemet 1
Kunder som forsøker å slå av eller starte på nytt system, enten lokalt eller eksternt, ved hjelp av kommandoen stop-datamaskin på PowerShell v3.0 og senere, vises følgende feilmelding:
Stopp-datamaskin: ikke privilegium.
På linje: 1 tegn: 1
+ stop-datamaskin
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< DATAMASKINNAVN >: String) Stopp-datamaskin, ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Løsningen på problemet 1
Hvis du vil omgå dette problemet, kjører du kommandoen nedenfor "shutdown.exe" kjøre strøm-ned og starte operasjoner på lokale eller eksterne systemer:
Shutdown.exe [-r] [-s] [-m \\computer]
For mer informasjon og kommandoen hjelp, kan du kjøre:
shutdown.exe -?
Symptomer på problemet 2
Kunde programmer bruker power management metoder, for eksempel avslutning eller omstart, fra klassen Win32_OperatingSystem og angi EnablePrivileges -attributtet til true, kan følge den samme feilen "Kan ikke holdes".
-
Eksempel 1 (PowerShell) returnerer "Ikke privilegium" feil:
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()-
Eksempel 2 (C#-kode) returnerer "Ikke privilegium" feil:
[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); } }
-
Løsningen på problemet 2
-
For eksempel 1 (PowerShell):
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() -
For eksempel 2 (C#-kode):
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"]); } } } }
Løsning
Løsning på problemet 1
Hvis du vil løse dette problemet ved å installere oppdateringen i tabellen nedenfor, i henhold til systemet.
Operativsystemet |
Oppdatering |
Windows Server 2008 |
For for .NET Framework 2.0, installerer oppdateringen 4020511 For the .NET Framework 4.5.2, installere oppdateringen 4020507 For the .NET Framework 4.6, installere oppdateringen 4020503 |
Windows 7 og Windows Server 2008 R2 |
Installer oppdatering for .NET Framework 3.5.1-funksjoner, 4020513 Installer oppdatering for .NET Framework 4.5.2, 4020507 For .NET Framework 4.6 eller 4.6.1, installere oppdateringen 4020503 Installer oppdatering for .NET Framework 4.6.2, 4020500 |
Windows Server 2012 |
For the .NET Framework 3.5, installere oppdateringen 4020512 Installer oppdatering for .NET Framework 4.5.2, 4020506 Installer oppdatering for .NET Framework 4.6 eller 4.6.1, 4020501 Installer oppdatering for .NET Framework 4.6.2, 4020498 |
Windows 8.1 og Windows Server 2012 R2 |
Installer oppdatering for .NET Framework 3.5, 4020514 Installer oppdatering for .NET Framework 4.5.2, 4020505 Installer oppdatering for .NET Framework 4.6 eller 4.6.1, 4020502 Installer oppdatering for .NET Framework 4.6.2, 4020499 |
Windows 10 RTM |
Installer oppdatering 4019474 |
10 for Windows versjon 1511 |
Installer oppdatering 4019473 |
10 for Windows versjon 1607 og Windows Server 2016 |
Installer oppdatering 4019472 |
10 for Windows versjon 1703 |
Installer oppdatering 4016871 |
Løsning på problemet 2
Hvis du vil løse dette problemet ved å installere oppdateringen i tabellen nedenfor, i henhold til systemet.
Produktversjon |
Forhåndsvisning av kvalitet samleoppdatering KB |
---|---|
Oppdatering for Windows 10 1703 (RS2) Windows Server 2016 |
|
.NET framework 3.5 |
|
.NET framework 4.7 |
|
Oppdatering for Windows 10 1607 Windows Server 2016 |
|
.NET framework 3.5 |
Catalog 4034661 |
.NET framework 4.6.2 og 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-funksjoner |
|
.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 |
Gjelder
Denne artikkelen gjelder for følgende produkter, som beskrevet i delen Berørte produkter i CVE-2017 0160:
Microsoft .NET Framework 2.0, 3,5-tommers, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 på alle støttede versjoner av Windows kjører PowerShell 3.0 og senere versjoner.