Приложение ClickOnce не запоминает настройки при автоматическом запуске Windows

У меня есть приложение, развернутое с помощью ClickOnce, и оно может автоматически запускаться в Windows. Однако, когда я перезапускаю Windows, мое приложение успешно запускается, но не может найти настройки (я просто использую встроенную функцию настроек). Однако, если я закрою автоматически запускаемое приложение и перезапущу его со значком на рабочем столе, оно сможет найти свои настройки.

Для автоматического запуска с Windows я использую следующий код:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (runOnStartup == true) 
    key.SetValue("AppName", Application.ExecutablePath.ToString());
else 
    key.DeleteValue("AppName");

Я заметил, что ярлык на рабочем столе указывает не напрямую на исполняемый файл, а на URL-адрес, например:

http://pathToApp.application#AppName.application, Culture=neutral, PublicKeyToken=c8c0a22ba65cb9f4, processorArchitecture=x86

Как я могу заставить мое автозапускаемое приложение работать так же, как ярлык?


person tobinibot    schedule 22.04.2009    source источник


Ответы (1)


У вас нет контроля над тем, где будет установлено приложение ClickOnce, и оно будет перемещаться при каждом обновлении, поэтому я не сохраняю параметры, которые могут измениться, в файле app.config. Вместо этого я создаю свой собственный файл настроек (обычно с помощью простого сериализованного объекта xml) в «известную» папку, такую ​​как Environment.SpecialFolder.CommonApplicationData или Environment.SpecialFolder.LocalApplicationData.

person Jim Harte    schedule 26.04.2009
comment
Я также должен упомянуть, что я использую автономный режим установки. Вы можете быть ограничены в том, куда вы можете писать, если вы использовали только онлайн-режим. - person Jim Harte; 27.04.2009