使用WCF通过WMI启动远程进程

康拉德

我想通过从WCF服务调用WMI在远程计算机上启动一个进程(非交互式的小型控制台应用程序)。这是用户将从Web应用程序运行的WCF操作。

我实现了codeproject中的代码,并且对InvokeMethod函数的操作失败。错误是“访问被拒绝。(来自HRESULT的异常:0x80070005(E_ACCESSDENIED)”。

我使用WBEMTEST工具测试了WMI连接,它在同一域和另一域中的PC上都可以与同一组参数(到远程服务器的路径,用户名/密码,要运行的应用程序的路径)一起使用,效果很好。本教程中一样设置用于模拟的帐户由于它可以与WBEMTEST一起使用,因此在使用WCF进行此调用时是否需要检查某些特定事项?我读到在web.config的诊断部分将wmiProviderEnabled设置为'true'可能会有所帮助,但没有帮助。

康拉德

最后,我能够解决此问题。

首先,我将本文在“启用WMI”和“安全性”段落中描述的所有内容都应用于我的配置这还不够,在我的调查中,我发现上述codeproject源代码中可能存在错误。在ProcessMethod类中的StartProcess函数中,未将connectionScope添加到ManagementClass中。因此,我向构造函数添加了ManagementScope connectionScope参数,然后填充了processTask.Scope。请看一下我更新后的StartPtocess函数:

public static int StartProcess(string machineName, string processPath, ManagementScope connnectionScope, int timeout)
{
    ManagementClass processTask = new ManagementClass(@"\\" + machineName + @"\root\CIMV2",
                                                                    "Win32_Process", null);
    processTask.Scope = connnectionScope;
    ManagementBaseObject methodParams = processTask.GetMethodParameters("Create");
    methodParams["CommandLine"] = processPath;
    InvokeMethodOptions options = new InvokeMethodOptions();
    options.Timeout = TimeSpan.FromSeconds(timeout);
    ManagementBaseObject exitCode = processTask.InvokeMethod("Create", methodParams, null);

    return Convert.ToInt32(exitCode["ReturnValue"].ToString());
}

ManagementScope在ProcessLocal / ProcessRemote构造函数中创建。

这解决了我的问题。希望它可以帮助某人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Powershell和WMI停止然后启动远程进程

来自分类Dev

如何使用WMI远程启动Interactive Process?

来自分类Dev

无法使用WMI和C#远程终止进程

来自分类Dev

使用python在远程计算机上启动后台进程

来自分类Dev

使用WMI远程扩展分区

来自分类Dev

通过WMI远程确定PowerShell版本

来自分类Dev

通过SSH远程启动

来自分类Dev

通过ssh杀死远程进程

来自分类Dev

通过SSH杀死远程进程

来自分类Dev

使用SSH在远程服务器上启动进程-不需要后台进程

来自分类Dev

IIS 托管的 WCF 服务无法启动进程

来自分类Dev

通过自动启动守护进程

来自分类Dev

使用Ansible在远程主机上启动长时间运行的进程

来自分类Dev

使用Visual Studio 2012远程调试启动时崩溃的进程

来自分类Dev

如何等待脚本中使用ssh在远程计算机上启动的进程?

来自分类Dev

通过批处理脚本启动的PID终止进程(避免使用其他同名进程)

来自分类Dev

通过复制远程启动/停止Apache Camel

来自分类Dev

如何通过SSH启动远程firefox窗口?

来自分类Dev

如何通过SSH启动远程firefox窗口?

来自分类Dev

找出什么是通过命令启动进程

来自分类Dev

通过线程启动杀死进程

来自分类Dev

通过powershell启动进程,ArgumentList问题

来自分类Dev

使用WMI Python可能会杀死进程

来自分类Dev

使用伪tty启动多个ssh会话时输出乱码(当ssh断开连接/被杀死时,需要远程进程退出)

来自分类Dev

如何使用cpulimit启动进程?

来自分类Dev

如何使用Python退出通过GeckoDriver和Selenium启动的所有Firefox进程

来自分类Dev

使用注入的DLL从远程进程调用函数

来自分类Dev

通过其Rest API查找或启用NiFi远程进程组

来自分类Dev

使用Powershell或WMI在IIS中托管的停止/启动服务

Related 相关文章

  1. 1

    使用Powershell和WMI停止然后启动远程进程

  2. 2

    如何使用WMI远程启动Interactive Process?

  3. 3

    无法使用WMI和C#远程终止进程

  4. 4

    使用python在远程计算机上启动后台进程

  5. 5

    使用WMI远程扩展分区

  6. 6

    通过WMI远程确定PowerShell版本

  7. 7

    通过SSH远程启动

  8. 8

    通过ssh杀死远程进程

  9. 9

    通过SSH杀死远程进程

  10. 10

    使用SSH在远程服务器上启动进程-不需要后台进程

  11. 11

    IIS 托管的 WCF 服务无法启动进程

  12. 12

    通过自动启动守护进程

  13. 13

    使用Ansible在远程主机上启动长时间运行的进程

  14. 14

    使用Visual Studio 2012远程调试启动时崩溃的进程

  15. 15

    如何等待脚本中使用ssh在远程计算机上启动的进程?

  16. 16

    通过批处理脚本启动的PID终止进程(避免使用其他同名进程)

  17. 17

    通过复制远程启动/停止Apache Camel

  18. 18

    如何通过SSH启动远程firefox窗口?

  19. 19

    如何通过SSH启动远程firefox窗口?

  20. 20

    找出什么是通过命令启动进程

  21. 21

    通过线程启动杀死进程

  22. 22

    通过powershell启动进程,ArgumentList问题

  23. 23

    使用WMI Python可能会杀死进程

  24. 24

    使用伪tty启动多个ssh会话时输出乱码(当ssh断开连接/被杀死时,需要远程进程退出)

  25. 25

    如何使用cpulimit启动进程?

  26. 26

    如何使用Python退出通过GeckoDriver和Selenium启动的所有Firefox进程

  27. 27

    使用注入的DLL从远程进程调用函数

  28. 28

    通过其Rest API查找或启用NiFi远程进程组

  29. 29

    使用Powershell或WMI在IIS中托管的停止/启动服务

热门标签

归档