首先说明一下啊,用第一种方式可以正常工作,所以应该不存在权限问题吧
而且双方的计算机都没有开防火墙,所以希望大家不要瞎猜,要有理有据啊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);
                        //如果是本机计算机,两种方式都成功了
}

解决方案 »

  1.   

    使用ConnectionOptions来设置连接:ConnectionOptions. connection_wmi = new ConnectionOptions();
    connection_wmi.Username = "";
    connection_wmi.Password = "";
    connection_wmi.Authority = "ntlmdomain:DOMAIN";
      

  2.   

    打错了,纠正一下:
    ConnectionOptions connection_wmi = new ConnectionOptions();
    connection_wmi.Username = "";
    connection_wmi.Password = "";
    connection_wmi.Authority = "ntlmdomain:DOMAIN";
      

  3.   

    不是你这个问题,你这样解决不了问题
    connection_wmi.Authority = "ntlmdomain:DOMAIN";有没有这句是一样的
    我知道你是在网上找的这句,这是以讹传讹,解决不了问题
      

  4.   

    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系统下是需要的。
      

  5.   

    回贴竟然成了“以讹传讹”了,这样的话,你可以把MSDN卸载了!就这四句代码我还需要到网上去找?笑话了。
      

  6.   


    不好意思啊,是你理解错了,我的意思是网上的人以讹传讹,没有说你,不过你的方法确实不行
    connection_wmi.Authority = "ntlmdomain:DOMAIN"; 这一行解决不了问题