WMIを介して公開されているWin32_OperatingSystem管理クラスに直接アクセスするのに問題があります。
これはシングルトンクラスであり、「Win32_OperatingSystem=@」がシングルトンのインスタンスを取得するための正しいパス構文であると確信しています。
InvokeMethodを呼び出すと、ClassPathプロパティ(コメント行)にアクセスする場合と同様に、質問の下部にリストされている例外が生成されます。
私は何が間違っているのですか?
[ManagementObjectSearcher / ObjectQueryを使用してWin32_OperatingSystemのコレクション(1つだけが含まれる)を返すことができることは知っていますが、シングルトンであることがわかっているので、直接アクセスしたいと思います。]
ManagementScope cimv2 = InitScope(string.Format(@"\\{0}\root\cimv2", this.Name));
ManagementObject os = new ManagementObject(
cimv2,
new ManagementPath("Win32_OperatingSystem=@"),
new ObjectGetOptions());
//ManagementPath p = os.ClassPath;
os.InvokeMethod("Reboot", null);
System.Management.ManagementExceptionがキャッチされましたMessage="無効なオブジェクトパス"Source= "System.Management" StackTrace:at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)at System.Management.ManagementObject.Initialize(Boolean getObject)atSystem。 Management.ManagementBaseObject.get_wbemObject()at System.Management.ManagementObject.get_ClassPath()at System.Management.ManagementObject.GetMethodParameters(String methodName、ManagementBaseObject&inParameters、IWbemClassObjectFreeThreaded&inParametersClass、IWbemClassObjectFreeThreaded&outParametersClass)at System.Management.ManagementObject.InvokeMethod(String Object [] args)
返信ありがとうございます。
ニック-私はそれをどうやってやるのかわからない:)
ウロシュ-このMSDNページのおかげで、シングルトンクラスであるという印象を受けました。また、WBEMTestユーティリティでクラスを開くと、これが表示されます。
インスタンスダイアログには、これらのフィールドに「1オブジェクト」と「最大バッチ:1」が表示され、「Win32_OperatingSystem=@」が一覧表示されます。
ManagementScopeが機能していることが確認されているため、何が起きているのかわかりません。私はWMIの初心者ですが、これは最も単純なユースケースの1つのようです。