我试图在C#中创建程序,它将从本地或远程服务器检索一些数据。本地部分工作得很好,远程连接根本没有。我被拒绝访问。
这是代码
public void ConnectToWmi()
{
var options = new ConnectionOptions();
options.Username = "admin";
options.Password = "admin";
options.Impersonation = ImpersonationLevel.Impersonate;
options.EnablePrivileges = true;
var scope = new ManagementScope("\\SERVER_NAME\root\cimv2",options);
scope.Connect();
}
我已经使用wbemtest.exe进行了验证,该连接正常工作。 当我使用Wireshark检查两个连接时,我注意到了一些奇怪的事情 - wbemtest正在发送正确的用户名" admin"但是我的程序正在发送当前用户登录计算机的用户名。
所以我尝试了一点并创建了管理员帐户,其中包含凭据用户名" admin" 密码" admin"在计算机上,我正在运行我的程序。它的工作原理!
简而言之:为什么我的C#程序使用当前登录用户的凭据而不是我在代码中提供给它的凭据?
更多信息