概要
Microsoft セキュリティ更新プログラム ガイダンス CVE-2017-0160 で説明されている 2017 年 4 月のセキュリティ更新プログラムを適用した後に、PowerShell v3.0 以降の stop-computer コマンドが失敗します。 また、アプリケーションで Win32_OperatingSystem クラスの shutdown または reboot などの電源管理メソッドを使用し、EnablePrivileges 属性を true に設定している場合にも、同じエラーが発生する可能性があります。 "保有されていない特権" エラー メッセージが返されます。
詳細
問題 1 の現象
PowerShell v3.0 以降でローカルまたはリモートで stop-computer コマンドを実行してシステムをシャットダウンしたり再起動したりすると、次のエラーが表示されます。
stop-computer : 保有されていない特権。
行: 1 文字: 1
+ stop-computer
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (<コンピューター名>:String) [Stop-Computer], ManagementE
+ FullyQualifiedErrorId : StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
問題 1 の回避策
この問題を回避するには、ローカルまたはリモート システムで次の “shutdown.exe” コマンドを実行してシャットダウン操作と再起動操作を実行してください。
shutdown.exe [-r] [-s] [-m \\computer]
詳細とコマンドのヘルプについては、次のコマンドを実行します。
shutdown.exe -?
問題 2 の現象
ユーザー アプリケーションで Win32_OperatingSystem クラスの shutdown または reboot などの電源管理メソッドを使用し、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 Version 1511 |
更新プログラム 4019473 をインストールする |
Windows 10 バージョン 1607 および Windows Server 2016 |
更新プログラム 4019472 をインストールする |
Windows 10 Version 1703 |
更新プログラム 4016871 をインストールする |
問題 2 の解決方法
この問題を解決するには、お使いのシステムに応じて、下の図に表示されている更新プログラムをインストールします。
製品バージョン |
品質ロールアップ KB のプレビュー |
---|---|
Windows 10 更新プログラム 1703 (RS2) Windows Server 2016 |
|
.NET Framework 4.7 |
|
Windows 10 更新プログラム 1607 Windows Server 2016 |
|
.NET Framework 3.5 |
カタログ 4034661 |
.NET Framework 4.6.2 および 4.7 |
カタログ 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 |
注: Windows 10 Version 1703 用の .NET Framework 3.5 の更新プログラムは、今後の更新プログラムでリリースされる予定です。
適用対象
CVE-2017-0160 の「影響を受ける製品」に記載されているように、この資料は次の製品に適用されます。
PowerShell 3.0 以降のバージョンを実行しているすべてのサポートされているバージョンの Windows 上の Microsoft .NET Framework 2.0、3.5、4.5.2、4.6、4.6.1、4.6.2、4.7