Приложение ClickOnce не запоминает настройки при автоматическом запуске с Windows - PullRequest
2 голосов
/ 22 апреля 2009

У меня есть приложение, которое развернуто с 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

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

1 Ответ

2 голосов
/ 27 апреля 2009

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

...