Properties.Settings.Default存储在哪里?

Dav*_*N59 133 .net c# settings

我以为我知道这一点,但今天我被证明是错的 - 再一次.

运行VS2008,.NET 3.5和C#.我使用默认值将"用户"设置添加到"属性设置"选项卡,然后使用以下代码读取它们:

myTextBox.Text = Properties.Settings.Default.MyStringProperty;
Run Code Online (Sandbox Code Playgroud)

然后,在用户编辑选项对话框中的值后,我将其保存为:

Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)

我的问题是,这个新值保存在哪里?可执行文件目录中的MyApp.exe.config文件未更新,它仍包含默认值.另外,据我所知,该目录中的其他任何文件都没有更新!但是,当程序重新读入值时,它会获得更改的值,因此我知道它已保存在某处...

这不仅仅是学术性的,我需要能够手动编辑今天早上的价值,当我找不到任何改变的东西时,我会感到难过.

jas*_*onh 134

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

  • 实际上不,他们没有.您需要创建一个设置,将其命名为"UpgradeNeeded",并将其默认为true.然后,当您的应用程序启动时,请检查此 如果是,请调用Properties.Settings.Default.Upgrade(),. Save()和.Reload().然后将UpgradeNeeded重置为false并保存. (14认同)
  • 更新的版本?自从Windows 2000以来就是如此.你只是因为你以管理员身份运行而侥幸成功. (11认同)
  • 另外,在Visual Studio中生成的.config,最终在可执行文件夹中,我相信它只用于调试.打包最终应用程序时,不包括此.config,因为它是在用户第一次运行应用程序时生成的. (3认同)
  • @Joel Coehoorn:确实如此,但是现在在 Windows Vista 及更高版本的管理员帐户中,默认情况下如果没有 UAC 提升提示,您将无法获得对程序文件的写访问权限。这就是政策改变的原因。:) (2认同)
  • 还应注意,文件夹随每次版本升级而变化 - 因此用户每次更新软件时都会丢失其首选项. (2认同)

Akb*_*bar 83

您可以通过编程方式获取路径:

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

  • None:获取适用于所有用户的配置,PerUserRoaming:获取适用于当前用户的漫游配置,PerUserRoamingAndLocal:获取适用于当前用户的本地配置。 (2认同)

小智 7

感谢您指出正确的方向。我发现位于此怪物的user.config:c:\ users \ USER \ AppData \ Local \ COMPANY \ APPLICATION.exe_Url_LOOKSLIKESOMEKINDOFHASH \ VERSION \ user.config。

我必须在应用程序上更新版本,所有设置似乎都消失了。应用程序使用新版本创建了一个新文件夹,并使用了默认设置。花了很长时间才找到文件的存储位置,但这只是一个简单的复制和粘贴操作,即可将设置更改为新版本。


Sta*_* R. 5

它被保存在您的Documents and Settings \%USER%\本地设置\应用数据......等搜索一个名为user.config

但是,位置可能会改变.

  • 实际上,用户特定属性的正确环境变量是%userprofile%.在Vista或7下指定文档和设置将导致丢失文件夹或缺少对其找到的文件夹的权限. (5认同)