WMI查询问题 我想 用WMI 根据不同的计算机查询出他们的IP地址 ,循环显示在datagirdview中。 还有个问题,用WMI能查询出 AD域中所有计算机吗? 如果可以的话应该怎么做。最好能给段代码,分不够还可以加! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WMI只要给定了计算机名或IP,以及用户名密码和所在域,就可以查询该计算机上的信息。(windows)要得到所有域中的计算机,可以通过AD来进行搜索。 WMI应该可以实现吧,关键还是权限问题吧。以前了解过一点WMI相关的内容,记在自己的Blog里了,希望对你理解WMI的基本结构和基本的使用方法能有所帮助http://blog.vckbase.com/abbey/category/34.html?Show=All WMI查询远程计算机安装软件的代码 static void Main(string[] args) { string regMain = "Software//Microsoft//Windows//CurrentVersion//Uninstall"; string[] subKey = { "DisplayName" }; ManagementClass mClass = new ManagementClass(@"//" + "计算机名orIP" + @"/root/DEFAULT:StdRegProv"); mClass.Scope.Options.Password = "password";//密码 mClass.Scope.Options.Username = "Administrator";//用户名 mClass.Scope.Options.Authority = "NTLMDOMAIN:DOMAIN";//如果是本机用户,则填写DOMAIN;域用户,则填写所在域 object[] method_args = new object[] { 0x80000002, regMain, null }; object result = mClass.InvokeMethod("EnumKey", method_args);//得到所有子键 string[] sAppList = (String[])method_args[2];//保存子键 foreach (string sName in sAppList) { ManagementBaseObject inParams = mClass.GetMethodParameters("GetStringValue"); inParams["hDefKey"] = 0x80000002; inParams["sSubKeyName"] = regMain + @"/" +sName; inParams["sValueName"] = "DisplayName"; ManagementBaseObject curRes = mClass.InvokeMethod("GetStringValue", inParams, null);//得到显示名 if (curRes["sValue"] != null) { string keyValue = curRes["sValue"].ToString(); Console.WriteLine(keyValue);//列出所有软件名 } } Console.ReadKey(); } WMI 的一个实现这个链接,是以前我翻译过的一篇WMI的文章,附有代码。里面应该有你需要的内容了。不过好象没有涉及活动目录的部分。 上面贴的代码有点看不懂,怎么这么复杂啊,直接写一句MQL语句不行吗。还有能不能不写用户名和密码啊!直接查询域中计算机的信息! linq的问题 C# Viusal Studio 2008 怎么使用画笔画刷 一小题目,用C#建立一文件夹,文件夹下有子文件夹 [讨论]C#对EXCEL的读取和导出问题 很棘手的问题!! GetType()的问题 IIS7.0中怎么获取目录 没有例子不会做,求多线程调用有状态的Web service的例子或解决方案 简单问题:有什么方可以检测到窗口里的所有控件的Text属性有无change? 关于Response.Write问题 windows mobile系统下编写软件用什么语言 关于DrawRectangle的问题,在线等……
要得到所有域中的计算机,可以通过AD来进行搜索。
http://blog.vckbase.com/abbey/category/34.html?Show=All
{
string regMain = "Software//Microsoft//Windows//CurrentVersion//Uninstall";
string[] subKey = { "DisplayName" };
ManagementClass mClass = new ManagementClass(@"//" + "计算机名orIP" + @"/root/DEFAULT:StdRegProv");
mClass.Scope.Options.Password = "password";//密码
mClass.Scope.Options.Username = "Administrator";//用户名
mClass.Scope.Options.Authority = "NTLMDOMAIN:DOMAIN";//如果是本机用户,则填写DOMAIN;域用户,则填写所在域
object[] method_args = new object[] { 0x80000002, regMain, null };
object result = mClass.InvokeMethod("EnumKey", method_args);//得到所有子键
string[] sAppList = (String[])method_args[2];//保存子键
foreach (string sName in sAppList)
{
ManagementBaseObject inParams = mClass.GetMethodParameters("GetStringValue");
inParams["hDefKey"] = 0x80000002;
inParams["sSubKeyName"] = regMain + @"/" +sName;
inParams["sValueName"] = "DisplayName";
ManagementBaseObject curRes = mClass.InvokeMethod("GetStringValue", inParams, null);//得到显示名
if (curRes["sValue"] != null)
{
string keyValue = curRes["sValue"].ToString();
Console.WriteLine(keyValue);//列出所有软件名
}
}
Console.ReadKey();
}