gpt4 book ai didi

c# - .Net GetProcesses 的访问被拒绝

转载 作者:行者123 更新时间:2023-12-05 07:49:51 27 4
gpt4 key购买 nike

我无法连接到远程计算机以获取正在运行的进程列表。对于我的测试机器,我使用用户名@"ownme\veritas"。密码只是“veritas”。示例域是“ownme”。

return new System.Management.ConnectionOptions()
{
//certainly these variables have been checked and are correct
Username = UserCredential.DomainUser,
Password = UserCredential.Password
};

这是我尝试进行连接的地方。我不知道,但这实际上可能是这里的问题。也可能是我没有在上面的 ConnectionOptions 中填写足够的字段。我引用了这两篇文章:

https://www.experts-exchange.com/questions/23514935/How-to-use-GetProcess-for-remote-sytems.html

https://msdn.microsoft.com/en-us/library/system.management.connectionoptions.authentication.aspx

我不知道我做错了什么

ManagementScope scope = new ManagementScope($"\\\\{computer.DnsHostname}\\root\\cimv2", connectionOptions);
scope.Connect();

//Error: Access is denied
var processes = System.Diagnostics.Process.GetProcesses(dnsHostName);

最佳答案

GetProcesses 将使用当前用户凭据连接到远程计算机,而不是您通过 ConnectionOptions 指定的凭据。

您需要使用以正确的凭据创建的 WMI 范围对象来发出对进程的查询,如下所示:

//..

SelectQuery query = new SelectQuery("select * from Win32_Process"); //query processes

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
using (ManagementObjectCollection collection = searcher.Get())
{
foreach (var process in collection) //loop through results
{
var name = process["name"]; //process name
//Do something with process
}
}
}

关于c# - .Net GetProcesses 的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com