我的设置去哪儿了?

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-Tes​​t”:

我关闭它然后重新打开它,我的零钱就在那里。但它去哪儿了?在我运行它的文件夹中没有创建配置文件,就像我期望的那样。 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,它以user 这四个字母开头,而不是像%USERNAME% 这样的当前用户的占位符。 (%LOCALAPPDATA% 是用户特定的,用户名会出现在路径的目录部分而不是文件名中) 谢谢,在您的帮助下我找到了。我在帖子中解释了为什么我会遇到这样的困难。 @John:啊,已经创建了初始用户的计算机带来的乐趣,据称是为了您的利益(您可以“开始工作”而无需通过“开箱即用体验”OOBE您可以自己设置公司名称以及时区等内容)。实际上,预先创建的帐户通常会受到间谍软件的攻击——当我的新平板电脑带有预先创建的用户时,我的反应是备份驱动程序,然后重新格式化。

以上是关于我的设置去哪儿了?的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter:实体去哪儿了?

我提交的文件去哪儿了?

AutowirePartialView 可绑定属性去哪儿了?

字符串文字:它们去哪儿了?

.bss vs COMMON:啥去哪儿了?

啊啊啊!子表单去哪儿了?