Резюме
След прилагане на актуализации на защитата април 2017, описани в Microsoft update указания за сигурност CVE-2017-0160 , v3.0 + стоп-компютър команда в PowerShell не. Освен това ако приложения използват методи за управление на захранването, като изключване или рестартиране на Win32_OperatingSystem класа и EnablePrivileges атрибут на true, могат да наблюдават същата грешка. Съобщение за грешка "Не привилегия".
Допълнителна информация
Симптоми за проблем 1
Клиенти, които се опитват да изключите или рестартирате системата, локален или отдалечен, чрез командата стоп-компютър PowerShell v3.0 и по-късно, ще видите следното съобщение за грешка:
стоп компютър: привилегия не.
Линия: 1 знак: 1
+ стоп компютър
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< COMPUTERNAME >: низ) [стоп-компютър, ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Решение за проблем 1
За да заобиколите този проблем, изпълнете следната команда "shutdown.exe" за изпълнение на захранването надолу и рестартирайте операции на локални и отдалечени системи:
Shutdown.exe [-r] [-s] [-м \\computer]
За повече информация и командата help, изпълнение:
shutdown.exe -?
Симптоми за проблем 2
Клиент приложения с методи за управление на захранването, като изключване или рестартиране на Win32_OperatingSystem класа и Задайте атрибута EnablePrivileges на true, може да видите същата грешка "Привилегия не носи".
-
Пример 1 (PowerShell) връща грешка "Не привилегия":
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()-
Пример 2 (C# код) връща грешка "Не привилегия":
[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); } }
-
Решение за проблем 2
-
Например 1 (PowerShell):
$computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() -
Например 2 (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"]); } } } }
Решение
Решение на проблем 1
За да разрешите този проблем, инсталирайте актуализацията в таблицата по-долу според вашата система.
Операционна система |
Актуализация |
Windows Server 2008 |
За .NET Framework 2.0, инсталирайте актуализация 4020511 За .NET Framework 4.5.2, инсталирайте актуализация 4020507 За .NET Framework 4.6, инсталирайте актуализация 4020503 |
Windows 7 и Windows Server 2008 R2 |
За инсталиране на .NET Framework 3.5.1, актуализирайте 4020513 За инсталиране на .NET Framework 4.5.2, актуализирайте 4020507 За .NET Framework 4.6 или 4.6.1, инсталирайте актуализацията 4020503 За инсталиране на .NET Framework 4.6.2, актуализирайте 4020500 |
Windows Server 2012 |
За .NET Framework 3.5, инсталирайте актуализацията 4020512 За инсталиране на .NET Framework 4.5.2, актуализирайте 4020506 .NET Framework 4.6 или 4.6.1 Инсталирайте актуализация 4020501 За инсталиране на .NET Framework 4.6.2, актуализирайте 4020498 |
Windows 8.1 и Windows Server 2012 R2 |
За .NET Framework 3.5 Инсталирайте актуализация 4020514 За инсталиране на .NET Framework 4.5.2, актуализирайте 4020505 .NET Framework 4.6 или 4.6.1 Инсталирайте актуализация 4020502 За инсталиране на .NET Framework 4.6.2, актуализирайте 4020499 |
Windows 10 RTM |
Инсталирайте актуализация 4019474 |
Windows 10 версия 1511 |
Инсталирайте актуализация 4019473 |
Windows 10 версия 1607 и Windows Server 2016 |
Инсталирайте актуализация 4019472 |
Windows 10 версия 1703 |
Инсталирайте актуализация 4016871 |
Решение на проблем 2
За да разрешите този проблем, инсталирайте актуализацията в таблицата по-долу според вашата система.
Версия на продукта |
Преглед на качеството на сборни KB |
---|---|
Актуализация на Windows 10 1703 (RS2)
|
|
.NET framework 3.5 |
|
.NET framework 4.7 |
|
Актуализация на Windows 10 1607
|
|
.NET framework 3.5 |
Catalog
|
.NET framework 4.6.2 и 4.7 |
Catalog
|
Windows 8.1
|
|
.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
|
|
.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 |
Отнася се за
В тази статия се отнася за следните продукти, както е описано в раздела Засегнати продукти от CVE-2017-0160:
Microsoft .NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 за всички поддържани версии на Windows PowerShell 3.0 и по-нови версии.