【问题标题】:starting a program on a remote machine in wmi, but also opening the apps window (in c#)在 wmi 中启动远程机器上的程序,同时打开应用程序窗口(在 c# 中)
【发布时间】:2009-01-23 18:25:29
【问题描述】:

我在网络上浏览了一页又一页的数据,每个人似乎都说您不能让可执行文件通过 WMI 在另一台机器上远程执行应用程序并显示该应用程序的窗口。

有人知道解决这个问题的方法吗?

我已尝试创建 2 个可执行文件。 1 个可执行文件使用 Process 类并简单地启动一个可执行文件。代码如下:

 class Program
 {
      static void Main( string[ ] args )
      {
           ProcessStartInfo startInfo = new ProcessStartInfo();
           startInfo.CreateNoWindow = false;
           startInfo.UseShellExecute = false;
           startInfo.FileName = "C:\\folder\\Mexe.exe";
           startInfo.WindowStyle = ProcessWindowStyle.Normal;
           //p.MachineName="server";
           //p.Start(startInfo);
           Process p = Process.Start( startInfo );
      }
 }

这个可执行文件驻留在远程机器上。

我有另一个可执行文件将在客户端的机器上。此 exe 使用 C# 中的 WMI 通过命令行远程执行服务器上的应用程序。我得到的返回码为 0。服务器上没有任何反应。

任何想法我可能做错了什么?

我也考虑过在服务器上的任务调度器中创建一个计划任务,但禁用该任务。

谁知道让 WMI 应用程序启动这个任务的 C# 代码是什么?有没有办法辨别任务/应用程序是否开始完成?

【问题讨论】:

    标签: c# .net .net-2.0 wmi


    【解决方案1】:

    我相信你必须使用 Win32_ScheduledJob.Create 远程创建交互式进程。

    http://msdn.microsoft.com/en-us/library/aa389769%28VS.85%29.aspx

    你可以安排现在 +1 秒。

    【讨论】:

      【解决方案2】:

      如果您的命令行字符串正常,则进程名称 (Mexe.exe) 应该出现在 Windows 任务管理器的进程列表中,即使它是不可见的。我还看到了您可以使用计划任务使流程可见的信息,但从未尝试过。确认进程已创建后,您可以尝试为其创建计划任务并使用 Win32_Process.Start() 运行它。

      【讨论】:

        【解决方案3】:

        您可能已将“Mexe.exe”作为控制台应用程序。在您的代码中,startInfo 描述了一个 Windows 应用程序。尝试将“Mexe.exe”制作为 Windows 应用程序。我已经为控制台和 Windows 应用程序尝试了您的代码,并且它适用于 Windows 应用程序。

        您也可以直接使用客户端上的一个可执行文件来执行此操作。无需中间服务器可执行文件来调用“Mexe.exe”。只是提高性能的建议..

        【讨论】:

          猜你喜欢
          • 2013-09-18
          • 1970-01-01
          • 2017-08-21
          • 1970-01-01
          • 1970-01-01
          • 2022-01-19
          • 2013-01-08
          • 2011-08-29
          • 1970-01-01
          相关资源
          最近更新 更多