Zac*_*ach 2 sql wmi wmi-query c#-4.0
在尝试在网络上查找一组计算机时,我发现了ManagementObjectSearcher类以及ManagementObject类.ManagementObjectSearcher的构造函数将sql/sql-esque查询作为参数.目前,我正在使用我在遗留代码中找到的查询:
ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");
Run Code Online (Sandbox Code Playgroud)
但我正在试图弄清楚如何知道查询中可能存在的内容.什么是表/对象?所有可能的限制是什么?这个课程和相关问题的一般主题是什么,所以我可以查看并了解更多信息?
经过进一步研究,似乎这是WMI(Windows管理基础结构)的一部分
WMI查询: http ://msdn.microsoft.com/en-us/library/ms186146(v = vs.80).aspx
WMI搜索条件列表: http ://msdn.microsoft.com/en-us/library/windows/desktop/aa394554(v = vs.85).aspx
使用WMI: http ://msdn.microsoft.com/en-us/library/windows/desktop/aa393964(v = vs.85).aspx
书籍: http ://www.amazon.com/s/ref=nb_sb_noss_1?url = search- alias%3Daps&field- keywords = WMI
示例代码:
ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2");
foreach (ManagementObject item in adapters.Get())
{
foreach (ManagementObject setting in item.GetRelated("Win32_NetworkAdapterConfiguration"))
{
if ((!setting["IPAddress"].IsNull()) &&
(!setting["IPSubnet"].IsNull()))
{
foreach (string value in (String[])setting["IPAddress"])
{
mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
mySocket.Bind(new IPEndPoint(IPAddress.Parse(value), 49984));
//etc...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
看起来这是一个相当具有纪念意义的话题,但至少这给了我一个开始尝试理解它的地方.但是,我仍然完全不确定这是否是我正在努力解决的问题的一个很好的解决方案.