我正在尝试使用 System.Management 从远程机器收集进程信息。
我正在使用类似这些行的东西来模拟远程计算机上的管理员,但以下代码引发异常:“访问被拒绝”。
ConnectionOptions options = new ConnectionOptions();
options.Impersonation = System.Management.ImpersonationLevel.Impersonate;
ManagementScope scope = new ManagementScope(@"\\" + machine + @"\root\cimv2", options);
scope.Connect();
ObjectQuery query = new ObjectQuery("Select * from Win32_Process where ProcessId = "
+ procID.ToString());
ManagementObjectSearcher mos = new ManagementObjectSearcher(scope, query);
string cmdLn = "";
foreach (ManagementObject mo in mos.Get())
{
cmdLn = (string)mo.GetPropertyValue("CommandLine");
}
但是,如果我向 提供用户名和密码options
,一切正常。
我已经验证此代码作为模拟上下文执行(在远程计算机上具有足够的权限),所以我不确定为什么如果没有传递用户名/密码它就无法工作。
是否可以在不显式传递用户凭据的情况下成功进行身份验证?