これを使用して、アプリケーションの構成ファイルの場所を取得しています。
string path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
しかし、実際に使用されているファイルへのパスはわかりません。
私の問題は、アプリケーションを Windows タスク スケジューラから実行できるようにする必要があり、パラメーターを取得する必要があることです。私が行ってきた方法は、スケジューラでタスクを作成するときに、[参照] をクリックしてappref-ms
アイコンを見つけることです。AppData\Local\Apps\2.0\...
次に、スケジューラは、ファイルへのパスを入力するテキスト ボックスに、(アイコンへのパスを保持するだけでなく)下の奇妙な場所へのパスを入力します。.exe
このようにして、引数を追加することもでき、ファイルへのパスを使用したり、アイコンへのパスを入力したりするなど、私が試した他のこととは異なり、すべてが正常に機能します...
アプリケーションがタスク スケジューラから起動されると、アイコンで起動されたときとは異なる構成ファイルが使用されます。タスク スケジューラから実行した後、(常にアプリケーション内から)設定S
を値に変更するとします。T
次に、アイコンから実行するときに設定を変更S
しI
ます。次にタスク スケジューラからアプリケーションを実行すると、設定S
は にT
なり、次にアイコンから実行すると、設定S
は になりますI
。また、S
上記のコードが私に与えるパスでファイル内に設定することは、単なるデフォルト値です(そうではありませんT
or I
)。
アプリケーションの実行方法に関係なく、設定を同じにする必要があるため、これは大きな問題です。自分のファイルのデフォルト設定ファイルを自分で決めた場所に置き換えることを検討しています。これは私の唯一の選択ですか?アイコンから実行したときと同じ構成ファイルを使用する引数を渡すことができるように、タスク スケジューラからアプリケーションを実行する他の方法はありますか? アプリケーションが常に同じ構成ファイルを使用するように強制するコードはどうでしょうか?