- PR -

ASP.NETからバッチファイルの実行

1
投稿者投稿内容
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-01-21 10:43
お世話になっております。ASP.NET初心者でございます。

現在、ASP.NETにてサーバにあるバッチファイルの実行をしようとしています。
Processクラスを使用したコーディングをしているのですが、途中でフリーズしてしまいます。
以下が問題のコードです。

Dim proc As New Process

proc.StartInfo.FileName = "c:\test.bat"
proc.Start()
proc.WaitForExit()
proc.Kill()
proc.Close()

「proc.WaitForExit()」でフリーズしてしまいます。

バッチファイルは、コマンドプロンプトから単独で実行することができているので問題はないと思います。

Processクラスを使用しなくてもバッチファイルの実行を待機してくれる方法があれば手段を問わない状況です。

単純な問題なのかもしれませんが、大変困っている状態ですので皆さんのお力をおかりできればと思います。
宜しくお願い致します。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-01-21 11:38
そもそも
引用:
バッチファイルは、コマンドプロンプトから単独で実行することができているので問題はないと思います。

これだけでは根拠として弱いですね。
バッチファイルが本当に動いているか確認したほうがよいのでは。
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-01-21 11:47
返答ありがとうございます。

同じロジックをWindowsアプリケーションで実行してみると問題ありませんでした。
バッチファイルも問題なく実行されています。

ASP.NETで実行したい場合は何か特別なことが必要のように思えます。

宜しくお願い致します。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-01-21 11:50
だから、
引用:
同じロジックをWindowsアプリケーションで実行してみると

とか、
引用:
バッチファイルは、コマンドプロンプトから単独で実行することができている

とかじゃなく、ASP.NETから実行したときに(終了監視以前に)バッチファイルが実行されているかどうかを確認したんですか?
と聞いているんです。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-01-21 12:27
バッチファイルを動作させるためにCMD.EXEがプロセスとして立ち上がっているはず。そのCMD.EXEが終了していないんじゃないの?WINDOWSアプリケーションから同じロジックを動作させて問題が無い(CMD.EXEのプロセスがちゃんと終了する)と言うことは、CMD.EXEは起動しているけどBATファイル自体は動作していないんじゃないの?
そのBATファイルにはちゃんとASP.NETからのアクセス権限が割り当てられているの?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-01-21 16:31
お騒がせ致しました。

バッチファイルの中身は、フリーソフトを実行しZIPファイルの解凍をするものだったのですがご指摘のあった通りアクセス権限の問題でした。
ロジックは「vjslib.dll」を使用するように修正することで解決しました。

皆様の大切な時間を無駄にすることになってしまい大変申し訳ございませんでした。
また、貴重なご指摘ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)