Пользовательские настройки сбрасываются при перемещении приложения

Я заметил, что если вы переместите этот файл.exe приложения в другое место, настройки пользователя будут сброшены.

В моем понимании это происходит потому, что расположение в папке данных приложения также основано на пути к файлу.exe, который учитывается при создании хэша.

Я знаю, что есть разные альтернативы, либо с помощью реестра, либо путем создания вручную настраиваемого файла конфигурации, но мой вопрос заключается в том, возможно ли сохранить пользовательские настройки, когда приложение (.exe) перемещается в другое место с функциональностью по умолчанию Microsoft предоставляет?

Для своих тестов я использую отдельное приложение (только один файл.exe). Просто переместив файл в, скажем, /Desktop/Test/ от /Desktop/ вызывает создание новой папки под C:\Users\<user>\AppData\Local\<company>\Appname_Url_<hash> со стандартным user.config в нем. Старый файл user.config по-прежнему доступен, поэтому, если вы переместите файл.exe обратно в прежнее местоположение, тогда предыдущие настройки снова загрузятся. Это становится проблематичным не только потому, что вы теряете настройки, но если вы переместите файл 10 раз в 10 разных местах, вы получите 10 новых папок в appdata.

2 ответа

Решение

На самом деле это функция безопасности, связанная с развертыванием сборки и щелчком мыши. Я думаю, что вам просто нужно добавить строгое имя в основной сборке, чтобы преодолеть эту проблему.

Если у вас нет строгого имени, имя будет примерно таким, и оно изменится, если изменится путь к приложению (см. Маркер Url):

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

Если у вас строгое имя, это будет что-то вроде этого, и оно не изменится, потому что источник вашего приложения теперь идентифицирован независимо от его текущего местоположения (см. Токен StrongName):

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

Из этого поста в блоге относительно расположения файла конфигурации:

Если по какой-то причине вам необходимо сохранить настройки в другом месте, рекомендуется написать собственный провайдер настроек.

Это говорит мне о том, что с небольшим количеством кода вы, вероятно, можете хранить файл там, где вам нужно, и он не будет перемещаться.

Другие вопросы по тегам