用户模式的.NET设置存储在哪里?

38
我想知道.NET中.settings文件的神奇之处在哪里。 假设您创建了一个名为SettingsHolder的程序集,其中包含一个公共的、带有用户模式下字符串的设置类,然后进行编译。
现在,在MyApp中引用您的程序集后,编译并使用来自SettingsHolder中生成的设置类更改应用程序设置的值,并将其持久化。
现在进入MyApp的输出目录,却找不到您的设置的任何痕迹(应用程序配置文件中没有,程序集中也没有,什么都没有!)。
这是怎么回事?!(我尝试在.NET源代码中进行了单步调试和使用反射器查看了发生了什么,似乎.NET使用了LocalFileSettingsProvider(但这对我来说很奇怪,因为在输出目录中的MyApp.exe.config中没有任何内容)。)
4个回答

58

设置文件对于每个用户来说都存储在不同的位置。要找到它们,点击开始菜单,点击运行,然后粘贴:

%USERPROFILE%\Local Settings\Application Data\

按回车键。会有一个文件夹以你的"公司名称"(即装配程序中设置的名称)命名,然后还有一些子文件夹。这些设置存储在user.config文件中。

完整路径:

%USERPROFILE%\Local Settings\Application Data\<Company Name>\
<appdomainname>_<eid>_<hash>\<verison>\user.config.

在 Windows Vista 及更高版本中,这些文件被存储在以下位置:

%USERPROFILE%\AppData\Local\

更多信息:


17
在Windows Vista及以后的版本中,这些文件存储在%USERPROFILE%\AppData\Local\目录下。 - Robin Clowers
在不同版本的Windows上查找该路径的最终方法在此处描述:https://dev59.com/jKnka4cB1Zd3GeqPKDKu#48881353。 - Hugh W
在不同的Windows版本中找到适用的路径的确切方法在这里描述:https://stackoverflow.com/a/48881353/1688738。 - undefined
如果您在应用程序的新版本导致哈希值发生变化时丢失了用户设置,请参阅https://dev59.com/b3RB5IYBdhLWcg3wcm6d#1928041。 - Daz

1
在操作系统>=Vista上,我将声称用户设置文件位于以下位置: %LOCALAPPDATA%\yourcompany\app-name\..\user.config

0
在Windows 11中:(假设Windows安装在C驱动器上)
C:\Users\YourUserName\AppData\Local\YourApplicationName\

还有另一个文件夹,其中包含一个版本文件夹,最后在其中有一个user.config文件。所有设置都在这个文件中。


-4

设置文件包含在编译的程序集中。

编辑:

仅为澄清一下。从文件中获取设置设置的代码已编译到程序集中。这些值本身被移动到Program.exe.config中,其中Program是您的应用程序的名称。Reflector将让您查看获取和设置值的代码,包括配置文件的硬编码键。配置文件本身将显示该值并允许您在构建应用程序后进行更改。


我在反编译器的资源中找不到我的程序集的设置文件。 - Nicolas Dorier
1
Slashene:它不是嵌入式资源,而是生成一个C#代码文件,并将其编译为程序集中的一个类。 - Mehrdad Afshari
类Settings只是一个包装器,此外,如果该设置的值在此类中硬编码,则无法更改该设置的值。 - Nicolas Dorier
4
您的答案仅适用于将设置设置为应用程序级别的情况。问题明确说明这是在用户模式下。此外,您不能修改应用程序级别的设置(在program.exe.config中)。它们是只读的。 - ine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接