Как я могу заставить приложение, развернутое по клику, запускаться при запуске? - PullRequest
22 голосов
/ 31 декабря 2008

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

Лучшим вариантом, который я нашел при поиске, было установить для Publisher в приложении значение «Автозагрузка», чтобы ярлык меню «Пуск» был помещен в папку «Автозагрузка», но это похоже на огромный взлом, и я хотел бы, чтобы в меню «Пуск» значок меню люди могут найти.

Какие варианты у меня есть?

Ответы [ 11 ]

0 голосов
/ 20 декабря 2013

По какой-то причине windows не запускает мое приложение (файл ".appref-ms") при входе в систему. Поэтому я нашел решение, которое другие могут также найти полезным.

Когда мое приложение устанавливается впервые (и при запуске моего приложения), я добавляю / проверяю, что текущее местоположение моих приложений string.Concat(Application.ExecutablePath, " ", "/startup") существует в реестре "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run". Когда приложение запускается, я проверяю args на наличие «/ startup» и, если оно присутствует, выполняю следующий код.

var startMenuFile = Path.Combine("Programs", Company, Product + ".appref-ms");
var startMenuFolder = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
var fileName = Path.Combine(startMenuFolder, startMenuFile);

if (File.Exists(fileName))
{
    Process.Start(fileName);
    return;
}

// Log that for some reason, the application doesn't exist.

Это прекрасно сработало для меня. Но, если вы просто добавите значение Application.ExecutablePath в реестр без аргумента "/startup", приложение запустится при запуске Windows, но не в контексте приложения «щелкни один раз». Это не позволит вам иметь доступ к ApplicationDeployment.CurrentDeployment. Несмотря на то, что это сработало, проблема все еще существует в том, что при удалении моего приложения параметр реестра не удаляется. Это можно исправить с помощью @ Ivan Leonenko пользовательского решения для удаления. Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...