当移动应用程序时,用户设置将重置

本文关键字:设置 用户 移动 应用程序 | 更新日期: 2023-09-27 18:15:18

我注意到,如果你移动应用程序。exe文件在另一个位置的用户设置重置。

在我的理解中,发生这种情况是因为应用程序数据文件夹中的位置也是基于。exe的路径的,当生成哈希时要考虑到这一点。

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

对于我的测试,我使用一个独立的应用程序(只有一个.exe文件)。简单地将文件从/Desktop/移动到/Desktop/Test/,就会在C:'Users'<user>'AppData'Local'<company>'Appname_Url_<hash>下生成一个新文件夹,并使用默认用户。在其中配置。老用户。配置仍然可用,所以如果你把。exe文件移回以前的位置,那么以前的设置会再次加载。这变得很麻烦,不仅因为您丢失了设置,而且如果您在10个不同的位置移动文件10次,您最终会在appdata.

当移动应用程序时,用户设置将重置

中创建10个新文件夹。

这实际上是一个安全特性,与程序集部署和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

关于配置文件的位置:

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

这告诉我,通过一些代码,你可以把文件存储在你想要的地方,它不会移动。