2009-05-21 19 views
0

vb.net 2008では、別のコンピュータに存在するバッチファイルを実行します。 エラーはありませんが、何も起こりません。ここ はコードです:VB.NETを使用して別のコンピュータでバッチファイルを実行するにはどうすればよいですか?

Dim pStart As New System.Diagnostics.Process 
Dim startInfo As New System.Diagnostics.ProcessStartInfo(serverpath & "\file.bat") 
startInfo.RedirectStandardOutput = True 
startInfo.WindowStyle = ProcessWindowStyle.Hidden 
startInfo.UseShellExecute = False 
pStart = System.Diagnostics.Process.Start(startInfo) 
pStart.WaitForExit() 
pStart.Close() 
+1

あなたが動作していないコードを投稿してください。 –

+1

また、バッチファイルの投稿を検討する必要があります。 –

+1

あなたの投稿を編集し、以下の質問に答えてください。バッチは何をしていますか?それが動作していないことをどのように知っていますか?ローカルドライブから実行するとバッチが実行されますか? –

答えて

1

リモートコンピュータでプロセスを実行するには、Sysinternalsを無料でpsexecにすることができます。

サンプルコードで実行しているように、適切なパラメータと必要な権限を持って呼び出すことができます。

+0

ありがとうございます。私はpsexecを使用し、今は正常に動作します。 – user109285

1

私は実行可能ファイルとしてバッチファイルを使用してプロセスを作成しようとしたことがありません。私はいつもcmd.exeをプログラムとして使用しなければならなかった。これは、過去に私のために働いている:

Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat") 

「/ c」を引数リストの一部としてバッチファイルが完了した後、出口にCMD.EXEを伝えます。

RedirectStandardOutputを使用する場合は、実際にはRedirectStandardErrorを使用し、それらのストリーム(OutputDataReceivedおよびErrorDataReceived)でデータを取得するためのProcessクラスのイベントにサブスクライブします。そうしないと、バッチスクリプトをデバッグする方法がありません。

+0

私はNeilを証明しましたが、それでもローカルの.exeファイルを実行し、リモートモードでは実行しません。その他のアドバイスは? – user109285

0

これは権限の問題のように表示されます。あなたがそれをまだ支配していないなら、私はそれをその方法で解決するでしょう。
ローカルコンピュータから同じバッチファイルを実行しようとしましたか?
アクセス許可の問題の場合は、実行前にファイルをローカルにコピーするか、ファイルがあるリモートコンピュータにドライブをマップしてから、新しいパスからバッチファイルを実行して解決できます。

また、問題の原因となる可能性のあるバッチファイル内の内容はわかりません。私は、バッチファイルを投稿するか、バッチファイルを投稿できない場合は、投稿できるバッチファイルを使用します。例バッチファイルは、現在の日付時刻をファイルに書き込みます。