在远程计算机上启动exe文件

时间:2014-09-09 12:09:41

标签: c# wmi remote-access

我有一个成功停止进程的进程。但是我该如何开始呢?它是一个放在远程机器硬盘上的.exe文件。

var ui = new ImpersonateUser();
var processName = "notepad.exe";
object[] processArgs = { @"C:\\WINDOWS\notepad.exe" };

try
    {
        ui.Impersonate(Domain, _userName, _pass);

        ManagementPath path = new ManagementPath
        {
            Server = "serverName",
            NamespacePath = "\\ROOT\\CIMV2",
            ClassName = "Win32_Process"
        };

        ManagementScope scope = new ManagementScope(path);
        ManagementClass management = new ManagementClass(path);

        var query = new SelectQuery("SELECT * from Win32_process WHERE name = '" + processName + "'");

        using (var searcher = new ManagementObjectSearcher(scope, query))
        {
            foreach (ManagementObject process in searcher.Get())
            {
                process.InvokeMethod("Terminate", null); //This work
                Thread.Sleep(3000);
                management.InvokeMethod("Create", processArgs); //doesnt work. Why ?
            }
        }
    }

如何在关闭后启动.exe?

1 个答案:

答案 0 :(得分:0)

程序名中有拼写错误(D而不是T)。它应该是noTepad.exe而不是noDepad.exe除了我建议检查 InvokeMethod 返回的结果在你的情况下它返回9表示 Path Not Found Here是完整的代码列表。

<强>更新

如果 InvokeMethod 返回0,但您在远程计算机上没有看到记事本的新实例,则表示它是在后台运行的。但是,您应该能够在Windows任务管理器中看到这个新实例。