属性。设置。默认存储在哪里?

我以为我知道,但今天我又被证明是错的。

运行 VS2008。NET 3.5和 C # 。我在“属性设置”选项卡中添加了具有默认值的“用户设置”,然后使用下面的代码读取它们:

myTextBox.Text = Properties.Settings.Default.MyStringProperty;

然后,在用户编辑了选项对话框中的值之后,我像这样保存它:

Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();

我的问题是,这个新的价值保存在哪里?可执行目录中的 MyApp.exe.config 文件没有更新,它仍然包含默认值。另外,据我所知,该目录中的其他文件也都没有更新!但是,当程序将值读入时,它会得到更改后的值,所以我知道它保存在某个地方..。

这不仅仅是学术问题,今天早上我需要能够手动编辑这个值,当我找不到任何正在改变的东西时,我被难住了。

179708 次浏览

特定于用户的设置保存在该应用程序的应用程序数据文件夹中。请查找 user.config文件。

我不知道您的期望是什么,因为用户通常根本就没有对可执行目录的写访问权。

在您的项目根文件夹下有一个名为“属性”的文件夹,并且有 * 。文件夹下的设置文件。那是它存放的地方。

为了使用新版本的 Windows 策略,默认情况下只允许读访问 Program Files 文件夹(除非你提示用 UAC 升级,但那是另一个主题...) ,你的应用程序将在 %userprofile%\appdata\local%userprofile%\Local Settings\Application Data下有一个设置文件夹,这取决于你运行的是哪个版本的 Windows,用于特定于用户的设置。如果存储所有用户的设置,那么它们将位于所有用户配置文件(例如: C:\users\public\appdata\local)的 C:\usersC:\Documents and Settings下的相应文件夹中。

它保存在您的文档和设置% 用户% 本地设置应用程序数据... ... 等搜索一个名为 Config的文件

然而,位置可能会改变。

您可以通过编程获得路径:

using System.Configuration;  // Add a reference to System.Configuration.dll
...
var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;

谢谢你给我指明了正确的方向,我发现 user.config 就在这个怪物上: C: users 用户用户应用程序数据本地公司应用程序. exe _ Url _ LOOKSLIKESOMEKINDOFHASH VERSION USER.config。

我不得不在我的应用程序上升级版本,所有的设置似乎都消失了。应用程序使用新版本创建了一个新文件夹,并使用了默认设置。花了很长时间才找到文件的存储位置,但之后只需要简单的复制和粘贴就可以将设置传递到新版本。

我的一个 Windows 服务是作为 Windows Server 2016中的本地系统登录的,我可以在 C: Windows SysWOW64配置系统配置文件 AppData Local (应用程序名称)下找到 user.config。

我认为最简单的方法是在 C 盘上搜索应用程序名称,然后检查 user.config 在哪里

如果有人想知道微软商店里的应用程序设置在哪里,他们可能在 Windows 应用程序中,这是非常锁定的,但是你可以打开你的应用程序,然后用任务管理器打开文件路径到达那里。

但它们更有可能被保存在 C:\Users\[USERNAME]\AppData\Local\Packages\[NUMBERS][COMPANY].[APPLICATION]_[RANDOMDATA]\LocalCache\Local\[COMPANY]\[APPLICATION].exe_Url_[RANDOMDATA]\[VERSION]\user.config.

它们保存在 YOUR_APP.exe.config中,文件与 YOUR_APP.exe文件保存在同一个文件夹中,<userSettings>部分:

   <userSettings>
<ShowGitlabIssues.Properties.Settings>
<setting name="SavedUserName" serializeAs="String">
<value />
</setting>
<setting name="SavedPassword" serializeAs="String">
<value />
</setting>
<setting name="CheckSave" serializeAs="String">
<value>False</value>
</setting>
</ShowGitlabIssues.Properties.Settings>
</userSettings>

这是密码:

public void LoadInfoLogin()
{
if (Properties.Settings.Default.CheckSave)// chkRemember.Checked)
{
txtUsername.Text = Properties.Settings.Default.SaveUserName;
txtPassword.Text = Properties.Settings.Default.SavePassword;
chkRemember.Checked = true;
}
...

如果你使用的是 Windows10系统,这是目录:

C: Users < UserName > AppData Local

+

< ProjectName.exe _ Url _ some data > 1.0.0.0 < filename.config >