2010-07-02 101 views
2

我的scenerio连接到使用C#.Net的远程机器,并列出了与该远程计算机的所有进程。我可以杀死一个进程,或者在远程启动一个新进程。问题是,当我在远程执行一个新进程时,我可以在任务管理器上看到该进程,但是它并没有在Windows屏幕上显示。任何想法为什么它不出现在Windows上,但出现在任务管理器/进程。这里是我的代码执行远程进程执行

private void btnStartNew_Click(object sender, EventArgs e) 
    { 
     object[] arrParams = { txtNewProcess.Text.Trim()}; 
     try 
     { 
      manageClass = new ManagementClass(myScope, new ManagementPath("Win32_Process"), new ObjectGetOptions()); 
      manageClass.InvokeMethod("Create", arrParams); 
      btnConnect_Click(sender, e); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

我的范围是:

myScope = new ManagementScope(@"\ROOT\CIMV2", connOptions); 

回答

2

问题是关于管理员权限

0

不应该ManagementPath是像\计算机名\ ROOT \ CIMV2,而不只是\ ROOT \ CIMV2?

+0

connOptions管理这个。想想,我在电脑里。所以我不需要键入一个计算机名称。它的工作,只是问题是不能看到我开始在UI中的.exe – 2010-07-02 16:12:46

0

如果你有麻烦的认证,那么你需要检查目标计算机上的DCOM配置。

  1. 在目标机器上,从命令提示符运行dcomcnfg
  2. 展开Component Services\Computers\My Computer\DCOM Config
  3. 找到Windows管理指令,用GUID 8BC3F05E-D86B-11D0-A075-00C04FB68820标识(您可以在详细信息视图中看到此内容)。
  4. 编辑属性,然后在权限选项卡下添加您尝试登录的用户名。
  5. 您可能需要重新启动服务才能使更改生效。