我的设置去哪儿了?
Posted
技术标签:
【中文标题】我的设置去哪儿了?【英文标题】:Where do my settings go? 【发布时间】:2017-02-06 23:00:38 【问题描述】:我很难弄清楚我的设置的去向。我保留了一个在任何地方都找不到的连接字符串。到目前为止,我了解到 AppName.vshost.exe.config 应该是调试版本,而 AppName.exe.config 应该是发行版,但事实并非如此,或者如果是这样,那么他们不会进入默认文件夹也不是我选择的文件夹。我不知道是我做错了什么还是这是微软的“功能”,但如果有人有线索,请填写。
我正在使用 VS 2015 在 Win 7 机器上进行开发。我的构建 - 配置是“活动(调试)”,并且我已将输出路径设置为“C:\Bin”,因为我正在构建其他库此应用程序需要,并且更容易将所有输出路径设置到同一个位置。
为了尝试找到问题,我做了一个新设置,测试:
我还在表单中添加了一个文本框并像这样使用它:
public Main()
...
textBox1.Text = Settings.Default.Test;
...
private void Main_FormClosing(object sender, FormClosingEventArgs e)
...
Settings.Default.Test = textBox1.Text;
...
然后我编译并将 exe 和所需的 dll 从 C:\Bin 复制到 C:\Test。该目录下没有任何配置文件。
表单在文本框中带有一个“T”。到目前为止,一切都很好。然后我将其更改为“EXE-Test”:
我关闭它然后重新打开它,我的零钱就在那里。但它去哪儿了?在我运行它的文件夹中没有创建配置文件,就像我期望的那样。 SQLgem.vshost.exe.config 和 SQLgem.exe.config 文件在我的输出文件夹 (C:\Bin) 中都有原始的“T”。
C:\Code\SQLgem\SQLgem\bin\Release 中没有任何内容,这是我所期望的,因为我没有构建发布。 C:\Code\SQLgem\SQLgem\bin\Debug 只是有shell,新设置(实际上是我的所有设置)不会出现在那里。
而且它变得更加奇怪。当我在调试(视觉工作室)中运行并更改“T”以进行调试时,它仍然存在。那么这个去哪里呢?
所以现在有两个设置仍然存在,但我在任何地方都找不到。执行 C:> dir SQLgem.exe.config /s 找不到比我已经提到的更多的内容。
他们会在哪里?
不知何故,“惠普公司”成为了嵌入信息的公司。因此,当我关注第一篇文章并检查这两个位置时,我本能地忽略了不是我公司的文件夹。经过进一步调查,我终于找到了他们!
【问题讨论】:
【参考方案1】:这些是用户范围设置,而不是应用范围设置,因此它们不会被持久化回 bin 目录中的 app.exe.config
(通常是 C:\Program Files
并且用户不可写)。
在 %LOCALAPPDATA%( 用户可写)下的某处,您会发现存储在名为 user.config
的文件中的设置。
此文件所在的目录受程序集元数据的影响,例如公司名称和产品名称和版本。
【讨论】:
它是什么? %APPDATA% 还是 %LOCALAPPDATA%?当您说 user.config 时,您是指像 bvoigt.config 这样的用户还是实际用户? @John:在%LOCALAPPDATA%
下我修复了这个问题,同时将我的评论扩展为完整的答案。文件名正好是user.config
,它以u
、s
、e
、r
这四个字母开头,而不是像%USERNAME%
这样的当前用户的占位符。 (%LOCALAPPDATA%
是用户特定的,用户名会出现在路径的目录部分而不是文件名中)
谢谢,在您的帮助下我找到了。我在帖子中解释了为什么我会遇到这样的困难。
@John:啊,已经创建了初始用户的计算机带来的乐趣,据称是为了您的利益(您可以“开始工作”而无需通过“开箱即用体验”OOBE您可以自己设置公司名称以及时区等内容)。实际上,预先创建的帐户通常会受到间谍软件的攻击——当我的新平板电脑带有预先创建的用户时,我的反应是备份驱动程序,然后重新格式化。以上是关于我的设置去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章