実行ファイル(EXE)の使い方について

mk 20 評価のポイント
2025-02-04T04:53:21.0733333+00:00

VisualStudio2015で作成したフォームアプリケーションを

以下の配置で実行しています。


xxx.exe

xxx.exe.config

yyy.dll ※サードパーティ製ランタイム


ある登録済み情報を参考にして、登録するために2画面表示できないかと考え

xxx.exeとxxx.exe.configをコピーし、以下の状態にしたところ実現できたのですが


xxx.exe

xxx.exe.config

xxx2.exe

xxx2.exe.config

yyy.dll


この方法は、そもそも利用方法として問題ないものなのでしょうか。

よろしくお願いいたします。

Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
110 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. gekka 10,821 評価のポイント MVP
    2025-02-04T09:19:23.8433333+00:00

    C#/VBならプロジェクトプロパティの設定(Properties\Settings.settings または My Project\Settings.settings)でスコープをユーザーにした設定値は共有されなくなります。

    • スコープがユーザーの設定ファイルであるuser.configの保存場所は実行ファイルのフルパスで変化します。
    • スコープがアプリケーションの設定値は実行ファイル名.exe.configのファイルに設定されて、実行時のファイル名で判断されます。

    そのため、実行ファイル名と同時にexe.configも変更すれば、そのままアプリケーション設定ファイルが別にできるということになります。
    つまり、スコープがユーザー/アプリケーションのどちらでも実行ファイルごとに別々になるので、同じ設定値を共有することはできなくなることに問題がなければ、単純コピーでも問題ありません。

    しかし、その他ではプログラム上で排他処理が考慮されていない場合にデータ破壊あるいは最悪クラッシュがあり得ます。
    たとえば、両方を同時に実行すると、

    • 同じファイルに対して同時に読み書きしようとするなどした場合に排他アクセスで処理しないと、エラーあるいは最悪ファイルを破壊
    • データベースにアクセスするようなプログラムで排他処理が十分にされていなくてデータの不整合

    が考えられますが、これらは全く別のプログラムであっても起きることなので、あらかじめ考慮したプログラムを作っておけばいいことです。

    よって、結論としては、

    • プログラムが同じモノを同時に操作しないまたは排他処理している場合は、実行ファイルを単純にコピーして同時使用しても問題ない。
    • プログラムに排他処理が足りないなら同時使用にはリスクがある。

    ということになります。


お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。