0

Web上のデータを次々と閲覧してきましたが、実行可能ファイルで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#コードが何であるかを誰かが知っていますか?タスク/アプリケーションの開始が終了したかどうかを識別する方法はありますか?

4

3 に答える 3

1

Win32_ScheduledJob.Createを使用して、リモートでインタラクティブなプロセスを作成する必要があると思います。

見る

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

Now+1秒にスケジュールすることができます。

于 2009-11-24T22:36:54.857 に答える
0

コマンド ライン文字列に問題がなければ、プロセス名 (Mexe.exe) が非表示であっても、Windows タスク マネージャーのプロセス リストに表示されます。スケジュールされたタスクを使用してプロセスを表示できるという情報も見ましたが、試したことはありません。プロセスが作成されたことを確認したら、スケジュールされたタスクを作成し、Win32_Process.Start() を使用して実行してみてください。

于 2009-01-24T14:42:49.427 に答える
0

'Mexe.exe' をコンソール アプリケーションとして作成した可能性があります。あなたのコードでは、 startInfo は Windows アプリケーションを記述しています。'Mexe.exe' を Windows アプリケーションとして作成してみてください。コンソールと Windows アプリケーションの両方でコードを試してみましたが、Windows アプリケーションで機能しました。

また、クライアント上の実行可能ファイルを 1 つだけ使用して、これを直接実行することもできます。「Mexe.exe」を呼び出すための中間サーバー実行可能ファイルは必要ありません。パフォーマンスを向上させるための単なる提案です..

于 2011-10-28T06:20:15.117 に答える