2012-02-24 21 views
3

私は現在、いくつかのデバイス(Lanポートなどのサービスとハードウェア)をリモートコントロールする必要のある小さなプログラムを作成しています。私はグーグルについて多くの情報をグーグルで読んでいますが、今は自分のプログラムを作ろうとしています。Visual Studio C#expressのWin32_NetworkAdapterの参照名前空間は何ですか?

しかし、Win32_NetworkAdapterクラスの参照名前空間が見つかりませんでした。私はすでにSystem.ManagementとMicrosoft.Win32をプロジェクトにインポートしていますが、SDKはまだWin32_NetworkAdapterが見つからないと私に言っていました。

私はここで何が欠けていますか?

PS。私はWindows XPを使用しています。

ありがとうございました。ここで


は、私のコードの気圧です:

string manage = "SELECT * From Win32_NetworkAdapter"; 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(manage); 
ManagementObjectCollection collection = searcher.Get(); 

foreach (ManagementObject obj in collection) 
{ 
    if (obj["Name"].ToString() != null) 
    { 
     if (obj["Name"].ToString() == "Realtek RTL8168C(P)/8111C(P) PCI-E Gigabit Ethernet NIC") 
     { 
      obj.InvokeMethod("Disable", null); 
      textBox3.Text += "finished"; 
     } 
    } 
} 

私は、デバッグモードで走ったと私はOBJのプロパティ(クラスパス、オプション、パス、スコープ)エラーメッセージが表示されていることが見つかりました:

以前の関数評価 がタイムアウトしたために関数評価が無効になっています。機能 の評価を再び有効にするには、実行を続行する必要があります。

どのようなアイデアですか?

答えて

0

C#ではWMIクラスをクラスとして使用しません。代わりに、WMIクエリメソッドにクラス名を渡す:@Wiktor Zychlaが提案されているよう

var search = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter"); 
+0

既知のMACアドレスを持つネットワークカードを無効にするにはどうすればよいですか? – tingfungc

+0

http://blog.opennetcf。com/ncowburn/2008/06/24/HOWTODisableEnableNetworkConnectionsProgrammaticallyUnderVista.aspx –

+0

これは問題ですが、私のVS ExpressはWin32_NetworkAdapterとNetworkAdapterを見つけることができませんでした。 – tingfungc

1

は、あなたがそれらを使用するか、あなたのおmgmtclassgen.exeを使用して強く型付けされたC#クラスを生成します。また、このトピックの詳細とリンクについては、SO question/answerを参照してください。

3

WMI "クラス"はC#の意味でのクラスではありません。彼らはに似ているので、その名詞を選んだのはです。彼らはC#クラスのように、名前、プロパティ、およびメソッドを持っています。

これはCOMインターフェイスです。あなたが持っているデバッガの警告についても説明します.COMインターフェイスにはスレッドアフィニティがあります。デバッガは、独立したスレッドであるデバッガスレッドでウォッチ式を評価します。ブレークポイントをアクティブにするとデッドロックする可能性があります。インターフェイスにアクセスするスレッドはデバッガによってフリーズされます。これは本当の問題ではなく、不便です。

Win32_NetworkAdapterクエリが何かを返さなかった場合、そのデバッガの警告が表示されないことがあります。名前を微妙に間違って取得する可能性はありますが、あなたのコードは偶然に別のマシンでしか動作しないことに注意してください。また、WMIは薄れやすい傾向があります。情報を返すためにドライバに大きく依存し、ドライバは同等に作成されません。それらの品質はおおよそハードウェアに費やした金額に比例します。 WMIクエリをテストしてテストするための最良の方法は、WMI Code Creator utilityです。任意のクエリを実行することができます。必要なC#コードを自動生成するオプションもあります。強くお勧めします。

+0

ありがとうございます。私はそのコンセプトについていくつかの誤解があるかもしれないと思う。私はこの問題に再び入る前にいくつかの情報を読むつもりです。 – tingfungc

関連する問題