C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■103673 / )  Re[1]: C#から外部バッチファイルを実行させるときのエラー
□投稿者/ 魔界の仮面弁士 (3845回)-(2025/05/14(Wed) 18:16:17)
No103672 (inak さん) に返信
> string exeBatchFile = AppDomain.CurrentDomain.BaseDirectory + @"run.bat";
このパスが正しいことは確認済みでしょうか?
(上記が、実行ファイルのフォルダーを指すとは限らないそうで)
https://dobon.net/vb/dotnet/vb6/apppath.html

> C:
> cd C:\temp\test
CD /D C:\temp\test
と 1 行にまとめることもできますね。

> cal_program.exe
> Fortranで作成されたDOS版の古いプログラム "cal_program.exe" が存在しているフォルダーに移ってから実行させるようにしています。
古いプログラムなら、32bit プロセスであることを前提にしていそうに思いますが、
そのバッチファイルは、32bit プロセスと 64bit プロセスのどちらで実行させていますか?
環境変数「PROCESSOR_ARCHITECTURE」と「PROCESSOR_ARCHITEW6432」の値を確認してみてはいかがでしょう。

> このコードを実行すると「System.ComponentModel.Win32Exception」「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」というエラーが発生します。
> メッセージを見るとバッチファイルが別プロセスで使用中というメッセージみたいで、バッチファイルも中身の記述が消えてファイルサイズがゼロになってしまっています。
UAC によるフォルダー仮想化の影響を受けていないでしょうか。
C# アプリを管理者モードで実行した場合とそうでない場合とで、動作が変化しますか?

> いろいろと試しているのですが、どうも原因がわかりません。
Process Monitor でレジストリ / ファイルへのアクセス状況を追跡できないでしょうか。
返信 編集キー/


管理者用

- Child Tree -