【100分】【WMI】【诡异】换了一种方式就拒绝访问?!
首先说明一下啊,用第一种方式可以正常工作,所以应该不存在权限问题吧
而且双方的计算机都没有开防火墙,所以希望大家不要瞎猜,要有理有据啊
- C# code
void Button1Click(object sender, EventArgs e) { ManagementObjectSearcher mos=new ManagementObjectSearcher("select * from win32_logicaldisk"); mos.Scope.Options.Username="xpclient"; mos.Scope.Options.Password="MZD"; mos.Scope.Path.Server="192.168.1.15"; //调用这个无惨的Get方法可以 foreach(ManagementObject mo in mos.Get()) { MessageBox.Show(mo["name"].ToString()); } //下面这种方法居然就拒绝访问了 ManagementOperationObserver moo=new ManagementOperationObserver(); moo.ObjectReady+= delegate(object ssender, ObjectReadyEventArgs se) { MessageBox.Show(se.NewObject["name"].ToString()); }; //在Get方法这里抛出异常,拒绝访问,是异步调用的原因吗? mos.Get(moo); //如果是本机计算机,两种方式都成功了 }
[解决办法]
使用ConnectionOptions来设置连接:
- C# code
ConnectionOptions. connection_wmi = new ConnectionOptions();connection_wmi.Username = "";connection_wmi.Password = "";connection_wmi.Authority = "ntlmdomain:DOMAIN";
[解决办法]
打错了,纠正一下:
- C# code
ConnectionOptions connection_wmi = new ConnectionOptions();connection_wmi.Username = "";connection_wmi.Password = "";connection_wmi.Authority = "ntlmdomain:DOMAIN";
[解决办法]
moo是否也应该有:
moo.Scope.Options.Username="xpclient";
moo.Scope.Options.Password="MZD";
moo.Scope.Path.Server="192.168.1.15";
另外:connection_wmi.Authority = "ntlmdomain:DOMAIN";
在NT系统下是需要的。
[解决办法]
[解决办法]
mark