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

本文关键字:string 权限 GetProcess Process 何获得 System Diagnostics | 更新日期: 2023-09-27 18:02:56

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

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

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

您可以尝试使用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。

hth

EDIT:再读一遍你的帖子,我的帖子中描述的步骤只适用于一个域,我假设你在一个工作组中工作。我很抱歉。

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

尝试以下操作:

  • 构建解决方案
  • 手动运行它与您的帐户,希望有从windows资源管理器在远程计算机上的权限,没有提升

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

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