exe と同じディレクトリに配置されている middle.config というファイルがありますが、このファイルの値を更新する必要があります。つまり、ファイルにアクセスするには C:\Program Files (x86)\ ディレクトリに移動する必要があります。.config ファイルとして名前が付けられていますが、通常の .config ファイルのスキーマには従いません。次のようになります。
<configuationSettings>
<middleSettings
groupName="XYZ"
forkName="SomeDbName"
dbServerName="123.123.123.123"
cnnTimeoutSeconds="30"
cmdDefaultTimeoutSeconds="30"
cmdMediumTimeoutSeconds="60"
cmdLongTimeoutSeconds="480"
/>
<userKeys>
<Assemblies value="C:\assemblies\" />
</userKeys>
<friendlyDbName value="NiceData"/>
</configuationSettings>
Xml を使用してコンテンツを読み取って操作することはできますが、ファイルを保存しようとすると、「権限がありません」というエラーがスローされます。ファイルを移動できません。この従来のスキーマに固執しているため、ConfigurationManager.OpenExeConfiguration を使用して通常の .config ファイルのように扱うことができません。このスキーマでセクションまたはグループを定義できません (とにかくできませんでした)。すべてのユーザーは、ローカル マシンの管理者です。
このファイルが保護されたディレクトリにあるときに、このファイルを上書きまたは削除して置き換えるにはどうすればよいですか (権限エラーに関する私の仮定)? それに失敗した場合、ConfigurationManager.OpenExeConfiguration を使用してこのスキーマにアクセスする方法はありますか。
{ここから編集開始}
このシナリオには、A、B、および鉱山Cの 3 つのアプリケーションがあります。アプリケーションAは他のアプリケーションを認識していません。非常に多くのデータベースに接続でき、最後のアプリケーションAセッションで使用された最後のデータベースの場所へのポインター情報を含む単一のファイル「middle.config」をドロップします。アプリケーションB、これをインポート/エクスポート アプリケーションと呼びましょう。最後のアプリケーションAデータベースの場所でのみ動作します。アプリケーションBは、データベース ポインター情報について「middle.config」ファイルを読み取り、そのデータベースに対してコンソール コマンドを実行します。データベースの選択した部分の一括ダンプまたは一括インポートを実行します。
これは、インポート/エクスポート アプリケーションBを使用してデータのブロックを取得し、データベースに返すアプリケーションCを構築することになったときの状況でした。したがって、アプリケーションCが 任意のデータベースに対してアプリケーションBを使用するには、アプリケーションBが正しいデータベースを見つけるように、アプリケーションCが「middle.config」ファイルを変更する必要があります。アプリケーションCは新しく、他の 2 つはレガシーです。これを機能させる方法を見つけるか、ユーザーに強制的に Application Aを起動させ、目的のデータベースを指定してから、 Application Aを閉じます。これは非常に不便です。
{編集はここで終了}