移动应用程序时重置用户设置

时间:2013-05-26 11:59:50

标签: c# winforms settings

我注意到,如果您在其他位置移动该应用程序.exe文件,则会重置用户设置。

据我所知,这是因为app数据文件夹中的位置也基于.exe的路径,在生成哈希时会考虑到这一点。

我知道有不同的选择,通过使用注册表或手动创建自定义配置文件,但我的问题是,当应用程序(.exe)移动到另一个位置时,是否可以保留用户设置Microsoft提供的默认功能?

对于我的测试,我使用一个独立的应用程序(仅一个.exe文件)。只需将文件移动到,/Desktop/Test/ /Desktop/即可在C:\Users\<user>\AppData\Local\<company>\Appname_Url_<hash>下生成一个新文件夹,其中包含默认的user.config。旧的user.config仍然可用,因此如果将.exe文件移回其先前的位置,则会再次加载先前的设置。这会变得很麻烦,不仅因为你丢失了设置,而且如果你在10个不同的位置移动文件10次,你最终会在appdata中找到10个新文件夹。

2 个答案:

答案 0 :(得分:2)

这实际上是一个安全功能,与程序集部署和clickonce相关。 我认为您只需要在主程序集中添加一个强名称即可克服此问题。

如果您没有强名称,名称将是这样的,如果应用程序路径发生更改,它将会更改(请参阅Url令牌):

%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._Url_3pei3cdnq3srqpjiwh1qnf12ncsp5c2w\1.0.0.0\user.config

如果您有一个强名称,它将是这样的,它不会改变,因为您的应用程序来源现在已被识别,无论其当前位置是什么(请参阅StrongName令牌):

%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._StrongName_fe0ndyau2vlgeac4gmbg13u3q4jtyrqv\1.0.0.0\user.config

答案 1 :(得分:0)

this blog post开始,关于配置文件的位置:

  

如果您需要将设置存储在其他位置   原因,推荐的方法是编写自己的SettingsProvider。

这告诉我,通过一些代码,您可以将文件存储在您想要的位置,并且不会移动。