5

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

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

4

3 回答 3

2

You may try to use WMI for this purpose

/// 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());
}

For further details on Win32_Process class see MSDN.

hth

于 2011-07-20T06:55:58.847 回答
1

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

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

尝试以下操作:

  • 构建解决方案
  • 使用您的帐户手动运行它,该帐户希望在 Windows 资源管理器的远程计算机上具有特权,无需提升

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

于 2011-07-20T07:34:08.233 回答
0

我很确定您需要提升才能执行此操作,或者至少通过模仿使用更强大的用户

于 2011-07-20T06:29:03.090 回答