私はこれを知っていたと思ったが、今日は間違っていることが証明されている-再び。
VS2008、.NET 3.5およびC#の実行。プロパティ設定タブにデフォルト値でユーザー設定を追加し、次のコードを使用してそれらを読み取りました。
myTextBox.Text = Properties.Settings.Default.MyStringProperty;
次に、ユーザーがオプションダイアログで値を編集した後、次のように保存します。
Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();
私の質問は、この新しい価値はどこに保存されていますか?実行可能ディレクトリのMyApp.exe.configファイルは更新されず、デフォルト値が含まれています。さらに、私が知る限り、そのディレクトリ内の他のファイルも更新されません!ただし、プログラムが値を読み戻すと、変更された値が取得されるため、どこかに保存されていることがわかります...
これは単なるアカデミックではありません。今朝、値を手動で編集できるようにする必要があり、変化するものが見つからなかったときに困惑しました。
Program Filesフォルダーへの読み取りアクセスのみをデフォルトで許可するという新しいバージョンのWindowsポリシーを使用するために(UACで昇格を要求する場合を除き、それは別のトピックです...)、アプリケーションには%userprofile%\appdata\local
の下に設定フォルダーがありますユーザー固有の設定については、実行しているWindowsのバージョンに応じて、%userprofile%\Local Settings\Application Data
。すべてのユーザーの設定を保存すると、すべてのユーザープロファイルのC:\users
またはC:\Documents and Settings
の下の対応するフォルダーに配置されます(例:C:\users\public\appdata\local
)。
プログラムでパスを取得できます。
using System.Configuration; // Add a reference to System.Configuration.dll
...
var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
私を正しい方向に向けてくれてありがとう。この怪物にあるuser.configを見つけました:c:\ users\USER\AppData\Local\COMPANY\APPLICATION.exe_Url_LOOKSLIKESOMEKINDOFHASH\VERSION\user.config。
アプリケーションのバージョンを更新する必要があり、すべての設定が消えたように見えました。アプリケーションは、新しいバージョンで新しいフォルダーを作成し、デフォルト設定を使用しました。ファイルが保存されている場所を見つけるために永遠に時間がかかりましたが、それは新しいバージョンに設定を取得するための簡単なコピーアンドペーストでした。
documents and Settings \%user%\ Local Settings\Application Data ...... etcに保存されます-ser.configというファイルを検索します
ただし、場所は変更される場合があります。
Windowsサービスの1つがWindows Server 2016のローカルシステムとしてログオンしており、C:\ Windows\SysWOW64\config\systemprofile\AppData\Local {your application name}にuser.configがあります。
Cドライブでアプリケーション名を検索し、user.configがどこにあるかを確認するのが最も簡単な方法だと思います
ユーザー固有の設定は、そのアプリケーションのユーザーのアプリケーションデータフォルダーに保存されます。 user.config
ファイルを探します。
そもそもユーザーは実行可能ディレクトリへの書き込みアクセス権さえ持っていないことが多いので、私はあなたが何を期待したのかわかりません。