3

そのアプリケーションの .exe ファイルを別の場所に移動すると、ユーザー設定がリセットされることに気付きました。

私の理解では、これは、アプリ データ フォルダー内の場所が .exe のパスにも基づいているために発生します。これは、ハッシュが生成されるときに考慮されます。

レジストリを使用するか、カスタム構成ファイルを手動で作成することによって、さまざまな代替手段があることは知っていますが、私の質問は、アプリケーション (.exe) がデフォルトの機能で別の場所に移動されたときにユーザー設定を保持することは可能ですか?マイクロソフトが提供する?

私のテストでは、スタンドアロン アプリケーションを使用します (1 つの .exe ファイルのみ)。ファイルを に移動するだけで、デフォルトの user.config を含む新しいフォルダーが生成され/Desktop/Test/ます。古い user.config は引き続き使用できるため、.exe ファイルを以前の場所に戻すと、以前の設定が再度読み込まれます。これは、設定が失われるだけでなく、ファイルを 10 か所の異なる場所に 10 回移動すると、appdata に 10 個の新しいフォルダーが作成されるため、面倒です。/Desktop/C:\Users\<user>\AppData\Local\<company>\Appname_Url_<hash>

4

2 に答える 2

3

これは実際には、アセンブリの展開とクリックオンスに関連するセキュリティ機能です。この問題を克服するには、メイン アセンブリに厳密な名前を追加するだけでよいと思います。

厳密な名前がない場合、名前は次のようになり、アプリケーション パスが変更されると変更されます (Url トークンを参照)。

%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._Url_3pei3cdnq3srqpjiwh1qnf12ncsp5c2w\1.0.0.0\user.config

厳密な名前がある場合は、次のようなものになり、現在の場所が何であれ、アプリのオリジンが識別されるため変更されません (StrongName トークンを参照)。

%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._StrongName_fe0ndyau2vlgeac4gmbg13u3q4jtyrqv\1.0.0.0\user.config
于 2013-05-29T09:09:15.200 に答える
0

このブログ投稿から、構成ファイルの場所に関して:

何らかの理由で設定を別の場所に保存する必要がある場合は、独自の SettingsProvider を作成することをお勧めします。

これは、少しのコードでファイルを好きな場所に保存でき、ファイルが移動しないことを示しています。

于 2013-05-28T18:58:49.450 に答える