如何获得使用System.Diagnostics.Process.GetProcess(string)的权限?

我正在使用Microsoft Visual Studio制作一个简单的远程任务管理器以用于体验目的。

我想使用Process.GetProcesses(string); 但有一个访问被拒绝的exception,不允许我进入远程计算机进程。 事实上它是正常的,因为我们应该使用用户名和密码进行身份validation, 但是如何

您可以尝试将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()); } 

有关Win32_Process类的更多详细信息,请参阅MSDN。

心连心

编辑 :只是再次阅读您的post,我的post中描述的步骤仅适用于域,我假设您在工作组内工作。 对不起。

在Windows 7上以管理员身份运行Visual Studio时,我最近遇到了类似的问题。如果您将程序提升为以本地管理员身份运行,那么远程机器和网络共享上的权限似乎被删除(即使在域中!)如果你以VS作为管理员运行VS的程序运行的情况。 如果您有域范围的管理员帐户,这甚至会发生。

请尝试以下方法:

  • 构建解决方案
  • 使用您的帐户手动运行它,该帐户可以从Windows资源管理器远程计算机上获得特权,而无需提升

如果这有帮助,您可以停止以管理员身份运行VS. 它对我来说很有用。

我很确定你需要提升才能做到这一点,或者至少通过模仿来使用更强大的用户