По какой-то причине 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 пользовательского решения для удаления. Надеюсь, это поможет ...