我在网上一页又一页地浏览过数据,似乎每个人都在说,你不能让一个可执行文件通过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。服务器上什么也不会发生。
你知道我做错了什么吗?
我还考虑过在服务器上的任务调度器中创建一个计划任务,但将该任务保留为禁用状态。
有没有人知道用什么C#代码来启动这个任务呢?是否有一种方法可以辨别任务/应用程序是否已启动或完成?
发布于 2009-11-25 06:36:55
我相信你必须使用Win32_ScheduledJob.Create来远程创建一个交互过程。
看见
http://msdn.microsoft.com/en-us/library/aa389769%28VS.85%29.aspx
你可以把它安排在现在+1秒。
发布于 2009-01-24 14:42:49
如果您的命令行字符串是OK的,进程名称(Mexe.exe)应该出现在Windows任务管理器的进程列表中,即使它是不可见的。我还看到一些信息,您可以使用计划任务使流程可见,但从未尝试过。一旦确认创建了进程,就可以尝试为它创建一个计划任务,并使用Win32_Process.Start()运行它。
发布于 2011-10-28 14:20:15
您可能已经将“Mexe.exe”作为控制台应用程序。在您的代码中,startInfo描述了一个windows应用程序。尝试将“Mexe.exe”作为windows应用程序。我已经在控制台和windows应用程序中尝试过你的代码,它在windows应用程序中工作。
你也可以直接在client.No上使用一个可执行文件来调用'Mexe.exe‘,这需要一个中间服务器的可执行文件。这只是一个提高性能的建议。
https://stackoverflow.com/questions/473945
复制相似问题