3

我注意到,如果您将该应用程序 .exe 文件移动到另一个位置,用户设置会重置。

据我了解,这是因为应用程序数据文件夹中的位置也基于 .exe 的路径,在生成哈希时会考虑到这一点。

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

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

4

2 回答 2

3

这实际上是一个安全特性,与程序集部署和 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
于 2013-05-29T09:09:15.200 回答
0

这篇博文中,关于配置文件的位置:

如果出于某种原因需要将设置存储在不同的位置,推荐的方法是编写自己的 SettingsProvider。

这告诉我,使用一点代码,您可能可以将文件存储在您想要的位置,并且它不会移动。

于 2013-05-28T18:58:49.450 回答