1

私はアプリケーションを作成していてProperties.Settings、設定を保存するために利用しています。

ただし、私のアプリケーションがユーザーのデスクトップにあり、呼び出されたとしましょう。ユーザーがProgram.exeこの実行可能ファイルをコピーして別の場所に配置したり、名前を変更したりすると、すべての設定が失われます。

なぜC#がこれを行うのですか?ユーザースコープに関係しているときにこれをオフにする方法はありますか?複数のユーザーが同じコンピューターを共有している可能性があるため、アプリケーションスコープを使用したくありません。

4

3 に答える 3

2

設定は{appname}.exe.config、実行可能ファイルでコピー/名前変更されていないように保存されている可能性があります。実行可能ファイルをファイルと一緒にコピーするか、アプリケーションにハードコーディングするか、アプリ設定を取得/設定するための別のメカニズム(レジストリなど)を見つけます。

アプリケーションは、という名前のファイルでこれらの設定を探します{appname}.exe.config。実行可能ファイルの名前が変更された場合(ファイルの名前を変更せずに.config)、またはファイルを一緒にコピーせずに別の場所にコピーされた.config場合、アプリケーションは設定を探す場所を認識しないため、(デフォルト値を設定しない限り)空白になります。アプリ)。

Settings.settingsVisual Studioの「ファイル」に値を入力することで、デフォルト設定を「ハードコーディング」できます(これにより、デフォルト値が属性として設定に効果的に追加されます)。

もう1つのオプションは、値をソースコードに直接ハードコーディングすることです。このアプローチは、その値を変更する機能を妨げるためお勧めしませんが、EXEをコピーするだけで(他には何も)アプリをデプロイできないようにする場合は、オプションです。

于 2012-12-17T19:31:20.077 に答える
0

設定はユーザー プロファイル (C:\Users[UserName]\AppData\Local の下) に保存されます。これらの設定は、アプリケーション名と、参照する exe ファイルの場所の識別子を持つフォルダーの下にあります。たとえば、 : MyApp.exe_Url_hpvvra0rj4y03ebpz3cfmzsrcpczat11、Program Files の下の実行可能ファイルを参照します。exe を移動またはコピーして実行すると、別の URL を持つ別のフォルダーが作成されます (たとえば、MyApp.exe_Url_vqzsq0spwewydv3wrnebtqji24nwuboe)、回避する方法が見つかりませんこれを回避するには、別の構成ファイルから設定をコピーすることをお勧めします。設定をコピーする適切なファイルを選択する必要があるため、この方法は絶対確実ではないことに注意してください。大変な作業になります。

もう 1 つの回避策は、カスタム設定クラスを作成し、.NET の組み込み設定ではなく、アプリケーションが見つけられる場所にファイルを配置することです。

于 2012-12-17T20:03:10.710 に答える
0

詳細については、 http://msdn.microsoft.com/en-us/library/aa730869 (v=vs.80).aspxを参照してください。

Properties.Settings を使用するときの設定 (およびその場所) は、特定の設定の Scope 設定によって決まります。

アプリケーション スコープの設定は app.config ファイル (コンパイル時に .exe.config に名前が変更されます。これらの設定は実行時に読み取り専用です) にあり、ユーザー スコープの設定は関連付けられた user.config に保存されます。マシン上のユーザーのプロファイル (これらの設定は実行時に読み取り/書き込みされます)。設定のスコープを適切に設定することで、この種の問題を回避できるはずです。

于 2012-12-17T19:48:46.553 に答える