My.Settings
値はプログラム自体に保存されますか、それともレジストリに保存されますか? たとえば、My.Settings
プログラムで値を設定した場合、そのプログラム自体を別の PC にコピーしますが、My.Settings
値はまだ設定されていますか?
4 に答える
選択した範囲によって異なります。スコープ設定には、アプリケーション スコープとユーザー スコープの 2 つがあります。
MSDN の記事から:
アプリケーション スコープの設定は読み取り専用で、そのアプリケーションのすべてのユーザー間で共有されます。これらの設定は、セクションの app.config ファイルに保存されます。実行時に、app.config ファイルは bin フォルダーにあり、アプリケーションの名前 (MySettingsDemo.exe.config) で名前が付けられます。
ユーザー スコープの設定は、ユーザーごとに固有です。これらは、実行時にアプリケーション コードによって安全に読み取られ、設定されます。これらの設定は、user.config ファイルに保存されます。技術的に正確に言うと、アプリケーションごとにユーザーごとに 2 つの user.config があります。1 つは非ローミング用で、もう 1 つはローミング用です。Visual Basic 2005 のドキュメントには、user.config ファイルの名前はユーザー名 (joe.config) に従って付けられると記載されていますが、そうではありません。user.config ファイルは次の場所に作成されます。
<c:\Documents and Settings>\<username>\[LocalSettings\]ApplicationData\<companyname>\<appdomainname>_<eid>_<hash>\<verison>.
Dim config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
MessageBox.Show(config.FilePath)
clickonce を使用してアプリケーションをインストールした場合、MySettings は「C:\Users\\AppData\Local\Apps\2.0\Data........」に保存されている構成ファイルに保存されます。
yourapp.exe.config という名前のファイルを使用して、これらのパスを検索します。
問題は、MySettings がそのアプリケーションの app.config ファイルに保存され、app.config ファイルを公開した後、applicationname.exe.config ファイルとして保存されることです。
それらがユーザー設定である場合、それらは間違いなくプログラム内に保存されません-それは実装が非常に簡単ではなく、むしろ無意味です. 代わりに、%AppData% フォルダー内の構成ファイルに保存されます。いいえ、プログラムをコピーした場合、ユーザー設定は付属せず、アプリケーション設定のみが付属します。