ملخص
بعد تطبيق التحديثات الأمنية 2017 أبريل الموصوفة في الإرشادات تحديث أمان Microsoft CVE 2017 0160 ، يفشل الأمر إيقاف الكمبيوتر v3.0 + PowerShell. بالإضافة إلى ذلك، إذا كانت التطبيقات تستخدم أساليب إدارة الطاقة، مثل إيقاف التشغيل أو إعادة التشغيل، من فئة Win32_OperatingSystem وتعيين السمة انابليبريفيليجيس إلى true، قد تلاحظ فشل نفس. يتم إرجاع رسالة خطأ "امتياز غير موجود".
مزيد من المعلومات
أعراض للمشكلة الأولى
العملاء الذين قاموا بمحاولة إيقاف تشغيل أو إعادة تشغيل نظام محلي أو بعيد، باستخدام الأمر إيقاف الكمبيوتر PowerShell v3.0 أو الأحدث، سترى الخطأ التالي:
توقف الكمبيوتر: الامتياز غير موجود.
في السطر: 1 char: 1
+ إيقاف الكمبيوتر
+ ~~~~~~~~~~~~~
+ كاتيجوريينفو: إينفاليدوبيريشن: (< COMPUTERNAME >: سلسلة) [توقف كمبيوتر]، ماناجيمنت
+ فوليقواليفيديروريد: StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
حل بديل للمشكلة الأولى
للتغلب على هذه المشكلة، بتشغيل الأمر "shutdown.exe" التالية لتنفيذ السلطة لأسفل وإعادة تشغيل العمليات في الأنظمة المحلية أو البعيدة:
shutdown.exe [-r] [-s] [-m \\computer]
لمزيد من المعلومات والأمر تعليمات، تشغيل:
shutdown.exe -?
أعراض للمشكلة الثانية
العميل تطبيقات استخدام أساليب إدارة الطاقة، مثل إيقاف التشغيل أو إعادة التشغيل، من فئة Win32_OperatingSystem وتعيين سمة انابليبريفيليجيس إلى 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); } }
-
حل بديل للمشكلة الثانية
-
على سبيل المثال 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 4.6 إطار عمل.NET أو 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 أو 4.6.1، تثبيت تحديث 4020502 تحديث لتثبيت.NET Framework 4.6.2، 4020499 |
الموائد المستديرة ويندوز 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 والإصدارات الأحدث بتشغيله.