.net 在何处存储同一台计算机中多个应用程序使用的连接字符串?

.net 在何处存储同一台计算机中多个应用程序使用的连接字符串?,.net,connection-string,registry,.net,Connection String,Registry,在my shop中,我们用于在.config文件中存储连接字符串。但是当我们必须在同一台机器上的几个应用程序中更新它时,有人提出了将其存储在windows注册表中的想法 这是个好主意吗?这意味着什么(安全性)?也许您可以使用一个通用组件(WCF或其他组件)作为连接字符串的参考。这样,您只需将字符串存储在一个位置 我不会将Windows注册表用于特定于应用程序的设置,尽管我知道很多其他应用程序都会这样做。您可以将其存储在machine.config中。除非明确清除,否则所有.config文件将继承

在my shop中,我们用于在.config文件中存储连接字符串。但是当我们必须在同一台机器上的几个应用程序中更新它时,有人提出了将其存储在windows注册表中的想法


这是个好主意吗?这意味着什么(安全性)?

也许您可以使用一个通用组件(WCF或其他组件)作为连接字符串的参考。这样,您只需将字符串存储在一个位置


我不会将Windows注册表用于特定于应用程序的设置,尽管我知道很多其他应用程序都会这样做。

您可以将其存储在machine.config中。除非明确清除,否则所有.config文件将继承其中定义的任何连接字符串。

我们将以加密形式在注册表中存储公共数据。 修改Machine.config是一个非常可怕的操作 一个缺点是注册表安全性。64位windows会让使用注册表变得非常奇怪。特别是在魔兽世界模式


此外,registry for administrators是一个非常老的朋友,也是众所周知的朋友(备份、恢复、导入、导出等对他们来说并不是新的)。至于machine.config,我希望他们永远不要碰它。

我同意machine.config方法。但是,更简单的方法是使用加密的xml文件在文件系统的某处创建一个目录。例如,使用Dpapi,然后只创建一个公共类来读取、解密文件并返回连接字符串。记住,如果有人删除配置数据,请使用回退方法获取该文件。正如前面指出的,machine.config可以被覆盖,这种方法也是如此。
目录权限可用于设置读取限制和拒绝除开发人员之外的所有人写入。这将确保它不会被“意外”覆盖,同时确保没有人可以读取其中的数据(即使没有密钥也没有意义)

是的,它可以工作(如果您只需要读取访问权限),machine.config对于整个dotnet是全局的,但是如果有人重新安装.net或替换machine.config怎么办。(像@Mark;-)嗯,希望你能控制自己的服务器。您可以就自己的应用程序问同样的问题。:)注册中心很古老,也很有名,但这并不意味着它是一个好的选择。如果说有什么不同的话,.NET已经非常努力地摆脱COM对注册表的依赖,转而允许XCOPY安装。因此,在本例中,我选择machine.config.XCOPY根本不起作用。net所需的所有程序,XCOPY?在哪里。net要求msi etcXCOPY是一个营销废话-它不能通过广告管理,也不能通过WIA显示。想想系统管理员。谁应该支持用户可以在任何文件夹中复制的程序。您可以编写一个简单的库,从普通XML文件读取连接字符串并返回它。据推测,它将进入GAC。