2009-07-25 9 views
1

をタイムアウトして評価することができませんでした。関数呼び出しは、私はそうのようなC#でいくつかの基本的なコードを書いた

ManagementObjectSearcher Get()メソッドからManagementObjectCollection型が返された行に到達すると、この行を評価しようとすると関数呼び出しがタイムアウトしたというエラーが発生します(実行時にforeachの最後の行ループ)。

エラーの詳細はこれ以上ないので、例外はありません。

どうすればこの問題を解決できますか?コードは私にはよく見えますか? - \ MachineX - shouldnあなたが与えたリンク参照からhttp://www.csharphelp.com/archives2/archive334.html

おかげ

+0

完全なWMIパスを使用することをお勧めします。 wbemtestを使用して同じクエリを実行できますか? – Mark

答えて

1

を、私は同じManagementScopeを参照してください。私は(ほとんど同じ手順に従います)ここからのコードを使用していますので、このコードは、他のマシン上にありますこれはあなたのローカルマシン名ではありません - エラー(スコープを見つけられないためタイムアウト)と一致しますか?

+0

おそらく、ユーザーが機密保持の目的で "\ MachineX"を投稿したと仮定しても安全だと思いますが、実際のマシン名で置き換えることは間違いありません... – James

+0

私は実際にマシンの名前をマシンの適切な名前私はコーディングしていますが、運はありません。 :(コードは同じで、私のPC固有のすべてのパラメータが変更されています。 – dotnetdev

2

そのままあなたのコードを実行しているとき、私はこの例外を取得:

System.Management.ManagementExceptionは、未処理だった メッセージ=「ユーザーの資格情報は、ローカル接続に使用することはできません」 ソース=「System.Management」 。 ..

oSearcher.Get()が使用されている行で発生しますが、WMI接続に問題があります。ローカルコンピュータに接続しようとしているためです。あなたはOMSの初期化後にこの行を追加する場合:

Console.WriteLine(oMs.Path.Path); 

を出力する(前と同じ例外を除いて)、このようになります:

\ \ MachineX

ので、あなたのパスが以下のように解釈されます。ローカル(ドット)マシン上のMachineXという名前のWMI名前空間。これは、C#のエスケープルールによるものである - (資格情報がローカルWMI接続に使用することはできませんので、oConnなし)あなたはOMSの初期化のためにこれを使用することもできます。

System.Management.ManagementScope oMs = 
new System.Management.ManagementScope("\\root\\cimv2"); 

とローカルでルート\ CIMV2名前空間に接続されます。

System.Management.ManagementScope oMs = 
new System.Management.ManagementScope(@"\\MachineX\root\cimv2", oConn); 
関連する問題