Обзор
После установки обновлений безопасности апреля 2017 г., описанной в рекомендации обновления безопасности корпорации Майкрософт 0160-CVE-2017 г. , команда PowerShell v3.0 + остановки компьютера не выполняется. Кроме того Если приложения используют методы управления питанием, например, завершение работы или перезагрузка в классе Win32_OperatingSystem и задайте для атрибута EnablePrivileges значение true, может наблюдать же ошибки. Возвращается сообщение об ошибке «Отсутствуют необходимые привилегии».
Дополнительные сведения
Проблемы проблема 1
Пользователи, попробуйте выключить или перезагрузить систему, локальным или удаленным, с помощью команды stop компьютер на PowerShell версии 3.0 и более поздних версий, будет отображаться следующее сообщение об ошибке:
Стоп компьютер: отсутствуют необходимые привилегии.
На символ строки: 1:1
+ остановки компьютера
+ ~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (< имя_компьютера >: строка) [Stop-Computer] ManagementE
+ FullyQualifiedErrorId: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Обходной путь для проблемы 1
Чтобы обойти эту проблему, выполните следующую команду «shutdown.exe» выключения и перезагрузки операций на локальном и удаленных компьютерах:
Shutdown.exe [-r] [-s] [-m \\computer]
Дополнительные сведения и команды Справка, запуск:
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 Для 4.6 платформа.NET Framework или 4.6.1, установить обновление 4020503 Платформа.NET Framework 4.6.2 установить обновления для 4020500 |
Windows Server 2012 |
Для платформа.NET Framework 3.5, установить обновление 4020512 Платформа.NET Framework 4.5.2 Установка обновления для 4020506 4.6 платформа.NET Framework или 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 4.6 платформа.NET Framework или 4.6.1 Установка обновления для 4020502 Платформа.NET Framework 4.6.2 установить обновления для 4020499 |
RTM Windows 10 |
Установка обновления 4019474 |
10 Windows версии 1511 |
Установка обновления 4019473 |
10 Windows версии 1607 и Windows Server 2016 |
Установка обновления 4019472 |
10 Windows версии 1703 |
Установка обновления 4016871 |
Для устранения ошибки 2
Чтобы устранить эту проблему, установите обновление в таблице ниже системные.
Версия продукта |
Предварительный просмотр качества свертки КБ |
---|---|
Центр обновления Windows 10 1703 (RS2) Windows Server 2016 |
|
Платформа.NET Framework 3.5 |
|
Платформа.NET Framework 4.7 |
|
Центр обновления Windows 10 1607 Windows Server 2016 |
|
Платформа.NET Framework 3.5 |
Catalog 4034661 |
Платформа.NET Framework 4.6.2 и 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 |
Применяется к
Данная статья относится к следующим продуктам, как описано в разделе « Уязвимые продукты » 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 и более поздних версий.