当我尝试使用System.management远程连接到计算机时出现此错误:
访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))
这是我的代码:
try
{
ConnectionOptions options = new ConnectionOptions();
options.Impersonation = System.Management.ImpersonationLevel.Impersonate;
options.Authentication = AuthenticationLevel.Packet;
options.Timeout = new TimeSpan(0, 0, 30);
options.EnablePrivileges = true;
options.Username = "\\" + textBox2.Text;
options.Password = textBox3.Text;
ManagementPath path = new ManagementPath(@"\\" + textBox1.Text + @"\root\cimv2");
ManagementScope scope = new ManagementScope(path, options);
scope.Connect();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return;
}
有人可以解释为什么我会收到此错误吗?
答案 0 :(得分:0)
鉴于您提供的用户名是正确的,存在并且有权访问该计算机。
这一行
options.Username = "\\" + textBox2.Text;
将导致用户名\administrator
,这不是有效的用户名。您需要定义域或范围。所以试试这个:
options.Username = ".\\" + textBox2.Text;
这将定义本地用户(在远程机器上)。使用域用户时,请在反斜杠前面写下域名:
options.Username = "MyCorp\\" + textBox2.Text;