C# 如何获取使用System.Diagnostics.Process.GetProcess(字符串)的权限?

C# 如何获取使用System.Diagnostics.Process.GetProcess(字符串)的权限?,c#,authorization,remote-access,user-permissions,C#,Authorization,Remote Access,User Permissions,我正在使用MicrosoftVisualStudio制作一个简单的远程任务管理器,用于体验 我想使用Process.getprocesss(字符串)但是有一个拒绝访问的异常,不允许我获取远程计算机进程。事实上,这是正常的,因为我们应该使用用户名和密码进行身份验证,但是如何验证呢 我很确定您需要提升来完成此操作,或者至少使用一个更强的用户,您可以尝试使用WMI来实现此目的 /// using System.Management; // don't forget! in VS you may h

我正在使用MicrosoftVisualStudio制作一个简单的远程任务管理器,用于体验


我想使用
Process.getprocesss(字符串)
但是有一个拒绝访问的异常,不允许我获取远程计算机进程。事实上,这是正常的,因为我们应该使用用户名和密码进行身份验证,但是如何验证呢

我很确定您需要提升来完成此操作,或者至少使用一个更强的用户,您可以尝试使用WMI来实现此目的

/// using System.Management;  
// don't forget! in VS you may have to add a new reference to this DLL
ConnectionOptions op = new ConnectionOptions();
op.Username = "REMOTE_USER";
op.Password = "REMOTE_PASSWORD";

ManagementScope sc = new ManagementScope(@"\\REMOTE_COMPUTER_NAME\root\cimv2", op);

ObjectQuery query = new ObjectQuery("Select * from Win32_Process");

ManagementObjectSearcher searcher = new ManagementObjectSearcher(sc, query);
ManagementObjectCollection result = searcher.Get();

foreach (ManagementObject obj in result)
{
     if (obj["Caption"] != null) Console.Write(obj["Caption"].ToString() + "\t");
     if (obj["CommandLine"] != null) Console.WriteLine(obj["CommandLine"].ToString());
}
有关类的更多详细信息,请参阅MSDN


hth

编辑:只需再次阅读您的文章,我的文章中描述的步骤仅适用于某个领域,我假设您在工作组中工作。对不起

我最近在Windows7上以管理员身份运行VisualStudio时遇到了类似的问题。如果您将程序提升为以本地管理员身份运行,则远程计算机和网络共享上的权限似乎会被删除(即使在域中!),如果您以管理员身份运行VS,则在VS之外运行程序时会出现这种情况。如果您有域范围的管理员帐户,甚至会发生这种情况

请尝试以下操作:

  • 构建解决方案
  • 使用您的帐户手动运行它,希望 从windows资源管理器在远程计算机上的权限,不带提升
如果这有帮助,您可以停止以管理员身份运行VS。这对我来说是成功的