当移动应用程序时,用户设置将重置
本文关键字:设置 用户 移动 应用程序 | 更新日期: 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.
这实际上是一个安全特性,与程序集部署和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。
这告诉我,通过一些代码,你可以把文件存储在你想要的地方,它不会移动。