6

次のコードを実行しています:

System.Management.ManagementClass wmiNetAdapterConfiguration = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration");
System.Management.ManagementObjectCollection wmiNetAdapters = wmiNetAdapterConfiguration.GetInstances();
Log.logInfo("Net adapters:" + wmiNetAdapters.get_Count());

一部のマシンでは問題ありませんが、一部のマシンでは次のエラーが発生します。

System.Management.ManagementException: 見つかりません

コール スタック:

System.Management.ManagementException: Not found 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementScope.InitializeGuts(Object o)
   at System.Management.ManagementScope.Initialize()
   at System.Management.ManagementObject.Initialize(Boolean getObject)
   at System.Management.ManagementClass.GetInstances(EnumerationOptions options)
   at System.Management.ManagementClass.GetInstances()

理由はありますか?

4

3 に答える 3

11

System.Management名前空間によって提供される機能は、 WMI(Windows Management Instrumentation)サービスに依存しています。

その例外をスローしているシステムでWMIサービスが開始されていないようです。

トラブルシューティングの目的で、[管理ツール]→[サービス]ユーティリティを使用して確認できます。

これが事実であることが判明した場合は、コードをtry-catchブロックでラップし、ServiceControllerクラスを使用して適切なサービスを開始および停止できます。

于 2011-03-09T15:06:37.470 に答える
0

WMI サービスが実行されていて、管理者アカウントを使用していました。

rsconfig.exeを使用してコマンドを実行したときに、まったく同じエラーとスタック トレースが発生しました。

cd C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\

rsconfig.exe -c -s sqlserver\instance -d dbName -a SQL -u user -p pass

私が間違っていたのは、インスタンス名に独自の引数-iがあり、これで修正されたことです。

rsconfig.exe -c -s sqlserver -i instance -d dbName -a SQL -u user -p pass

予想される引数を確認するには、次を実行します。

rsconfig.exe /?

アップデート:

これは実際には正しくありません。予想される引数を見ると、サーバー名にはインスタンス名も含める必要があることが示されています。引用符を使用することはできません。インスタンス名に $ 記号が含まれている場合は、エスケープする必要がある場合があります。こちらを参照してください。詳細については: https://stackoverflow.com/a/56370766/495455

于 2019-05-02T01:35:57.503 に答える