visual studio C#express中Win32_NetworkAdapter的引用命名空间是什么
本文关键字:引用 命名空间 是什么 NetworkAdapter studio C#express Win32 visual | 更新日期: 2023-09-27 18:25:51
我目前正在编写一个小程序,该程序必须远程控制一些设备(它们的服务和硬件,如Lan端口)。我已经在谷歌上搜索并阅读了许多关于WMI的信息,现在我正在努力制作我的程序。
但是我找不到Win32_NetworkAdapter类的引用命名空间。我已经将System.Management和Microsoft.Win32导入到项目中,但SDK仍然告诉我无法找到Win32_NetworkAdapter。
我在这里错过了什么?
PS。我正在使用windows XP,VS Express 2010 Express开发版
谢谢你的帮助。
这是我的代码atm:
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的属性(Classpath、Options、Path、Scope)显示了一条错误消息:
函数求值被禁用,因为以前的函数求值超时。必须继续执行才能重新启用功能评价
有什么想法吗?
WMI"类"不是C#意义上的类。他们之所以选择那个名词,是因为它们类似于一个类。它们有名称、属性和方法,就像C#类一样。
在引擎盖下面是一个COM接口。这也解释了您收到的调试器警告,COM接口具有线程相关性。调试器在一个单独的线程(调试器线程)上计算监视表达式。当断点处于活动状态时,访问接口的线程会被调试器冻结,从而导致死锁。这不是一个真正的问题,只是一个不便。
目前尚不清楚您遇到的问题是什么,如果Win32_NetworkAdapter查询没有返回内容,您将无法获得调试器警告。可能会出现名称的微妙错误,请注意,您的代码只能在另一台机器上意外工作。WMI确实很脆弱,它严重依赖驱动程序来返回信息,而驱动程序并不是平等的。它们的质量与你花在硬件上的钱大致成正比。到目前为止,实验和测试WMI查询的最佳方法是使用WMI代码生成器实用程序。它允许您执行任意查询,甚至可以选择自动生成所需的C#代码。强烈推荐。
您可以按照@Wiktor Zycla的建议使用它们,也可以使用mgmtclassgen.exe生成强类型C#类。有关该主题的更多信息和链接,请参阅本SO问答。
您不使用C#中的WMI类作为类。相反,您将类名传递给WMI查询方法:
var search = new ManagementObjectSearcher( "SELECT * FROM Win32_NetworkAdapter" );