c# - visual studio C# express 中 Win32_NetworkAdapter 的引用命名空间是什么?

标签 c# wmi

我目前正在编写一个必须远程控制某些设备(它们的服务和硬件,例如 Lan 端口)的小程序。我用谷歌搜索并阅读了很多关于 WMI 的信息,现在我正在尝试制作我的程序。

但是我找不到 Win32_NetworkAdapter 类的引用命名空间。我已经将 System.Management 和 Microsoft.Win32 导入到项目中,但 SDK 仍然告诉我找不到 Win32_NetworkAdapter。

我在这里错过了什么?

附言。我正在使用 Windows XP、VS Express 2010 Express for dev。

感谢您的帮助。


这是我的自动取款机代码:

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";
        }
    }
}

我在 Debug模式下运行它,我发现 obj 的属性(Classpath、Options、Path、Scope)显示错误消息:

Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.

有什么想法吗?

最佳答案

WMI“类”不是 C# 意义上的类。他们选择那个名词是因为它们很像一个类。它们具有名称、属性和方法,就像 C# 类一样。

在引擎盖下它是一个 COM 接口(interface)。这也解释了您收到的调试器警告,COM 接口(interface)具有线程关联性。调试器在单独的线程(调试器线程)上计算监视表达式。当断点处于事件状态时可能会死锁,访问接口(interface)的线程会被调试器卡住。这不是真正的问题,只是带来不便。

不清楚您遇到的问题类型,如果 Win32_NetworkAdapter 查询未返回某些内容,您将无法获得调试器警告。将名称弄错是有可能的,请注意您的代码如何只能意外地在另一台机器上运行。而且 WMI 确实往往不稳定,它严重依赖驱动程序返回信息,而驱动程序并非生而平等。它们的质量大致与您在硬件上花费的金额成正比。到目前为止,试验和测试 WMI 查询的最佳方法是使用 WMI Code Creator utility .它允许您执行任意查询,甚至可以选择自动生成您需要的 C# 代码。强烈推荐。

关于c# - visual studio C# express 中 Win32_NetworkAdapter 的引用命名空间是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428021/

相关文章:

c# - MSpec 与 Visual Studio 集成的替代工具是什么?

java - JACOB 库在多线程中使用时失败

c# - 将 .Net Windows 移植到 Linux

c# - 如何在 WPF 中获取 "Selected MenuItem"

c# - 我使用 Win32_Fan 获取并显示我的 CPU 风扇速度,但它不起作用,为什么?

c - 使用 IOCTL_STORAGE_QUERY_PROPERTY 获取序列号

c# - 从wmi获取每个进程的Cpu使用率

c# - 使用安全描述符在 C# 中创建 SMB 共享

c# - EWS 托管 API 拉取通知以查看新电子邮件不起作用

c# - 来自函数的可变数量的结果