首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wmi中启动远程机器上的程序,但同时打开应用程序窗口(在c#中)

在wmi中启动远程机器上的程序,但同时打开应用程序窗口(在c#中)
EN

Stack Overflow用户
提问于 2009-01-23 18:25:29
回答 3查看 5.7K关注 0票数 0

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

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

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

代码语言:javascript
复制
 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。服务器上什么也不会发生。

你知道我做错了什么吗?

我还考虑过在服务器上的任务调度器中创建一个计划任务,但将该任务保留为禁用状态。

有没有人知道用什么C#代码来启动这个任务呢?是否有一种方法可以辨别任务/应用程序是否已启动或完成?

EN

回答 3

Stack Overflow用户

发布于 2009-11-25 06:36:55

我相信你必须使用Win32_ScheduledJob.Create来远程创建一个交互过程。

看见

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

你可以把它安排在现在+1秒。

票数 1
EN

Stack Overflow用户

发布于 2009-01-24 14:42:49

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

票数 0
EN

Stack Overflow用户

发布于 2011-10-28 14:20:15

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

你也可以直接在client.No上使用一个可执行文件来调用'Mexe.exe‘,这需要一个中间服务器的可执行文件。这只是一个提高性能的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/473945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档