app.configでカスタム構成セクションを使用しようとすると次の問題が発生します。カスタム構成セクションを使用して、次のようにプログラムでバックアップするフォルダーの選択を追跡します。
<CustomConfigSection>
<BackupLocations>
<clear />
<add path="C:\Users\Marcel\Documents\" />
</BackupLocations>
</CustomConfigSection>
これで、構成ファイルを保存するたびに、次の例外が発生します。
System.Configuration.ConfigurationErrorsException:構成ファイルの読み込み中にエラーが発生しました:パスCへのアクセス:\プログラムファイル(x86)\バックアップソリューション\uqhuxi1j.tmpが拒否されました。(C:\プログラムファイル(x86)\バックアップソリューション\ BS.exe.Config)---> System.UnauthorizedAccessException
私が使用するコードは次のとおりです。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
CustomConfigSection section = (CustomConfigSection)config.GetSection("CustomConfigSection");
section.BackupLocations.Add(element);
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
これは、管理者としてログインしている場合は正常に機能し、PCに複数のアカウントが構成されている場合にのみ発生するため、UAC/権限の問題であることを意味します。通常のユーザーとして、私はそのフォルダーに対する適切な書き込み権限を持っていません。
今私の質問のために:
ユーザー設定がAppDataに保存され、カスタム構成セクションがApplicationFolder / exe.configに保存しようとしているのはなぜですか?カスタムセクションをAppData構成ファイルにも保存するにはどうすればよいですか?
権限に関係なく、すべてのユーザーのデータを保存できる必要があります。それで、カスタム構成セクションを使用してこれを達成できますか、それとも別のアプローチが必要ですか?できれば、カスタムセクションをAppData構成ファイルにも保存したいと思います。インストーラーのトリックを使用して、アプリケーションフォルダーへのアクセス許可を調整し、書き込みを許可したくありません。何よりも、プログラムの起動時に管理者権限を要求したくありません。
返信ありがとうございます。