使用C#设置和;LocalFileSettingsProvider

使用C#设置和;LocalFileSettingsProvider,c#,windows,winforms,C#,Windows,Winforms,我注意到,当使用Windows窗体应用程序创建的设置对象时,程序集信息的“公司名称”字段中的任何空格都会被user.config文件路径中的下划线替换。例如,在XP中,user.config文件的路径类似于: \Documents and Settings\user\Local Settings\Application Data\Company_Name_Here\App\Version\user.config \文档和设置\user\Local Settings\Application Dat

我注意到,当使用Windows窗体应用程序创建的设置对象时,程序集信息的“公司名称”字段中的任何空格都会被user.config文件路径中的下划线替换。例如,在XP中,user.config文件的路径类似于:

\Documents and Settings\user\Local Settings\Application Data\Company_Name_Here\App\Version\user.config \文档和设置\user\Local Settings\Application Data\Company\u Name\u Here\App\Version\user.config 但这似乎只发生在我自己的应用程序上。我的机器上安装了很多.NET应用程序,但应用程序数据下的其他目录名都不包含下划线(空格保留)

有什么好处?这没什么大不了的,但我只是想知道为什么这似乎只发生在我的应用程序上,是否有一种我不知道的方法可以改变这种行为。

某个在微软工作的人

-通常是AssemblyCompanyAttribute指定的字符串(需要注意的是,该字符串将根据需要转义和截断,如果未在程序集上指定,则我们有一个回退过程)

问:为什么路径如此模糊?有没有办法改变/定制它

答:路径构建算法在安全性、隔离性和鲁棒性方面必须满足一定的严格要求。虽然我们试图通过使用友好的、应用程序提供的字符串使路径尽可能容易被发现,但如果不遇到与其他应用程序冲突、欺骗等问题,就不可能保持路径完全简单

LocalFileSettingsProvider不提供更改存储设置的文件的方法。请注意,提供程序本身并没有首先确定配置文件的位置—它是配置系统。如果出于某种原因需要将设置存储在其他位置,建议您编写自己的设置Provider。这非常容易实现,您可以在.NET2.0SDK中找到示例来演示如何实现这一点。但是请记住,您可能会遇到上述相同的隔离问题

可能会给出一些解释

因此,其他应用程序可能使用了支持空白的单个设置提供程序

还提到了默认.NET设置提供程序的限制:

每个应用程序设置必须具有唯一的名称;名称可以是字母、数字或下划线的任意组合,但不能以数字开头,也不能包含空格。可以通过name属性更改名称