.appxbundle не может изменять реестр

У меня есть этот простой фрагмент кода, добавляющий мое приложение для запуска при запуске Windows. Работает отлично.

RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk.SetValue("my_app", Application.ExecutablePath);

Затем я упаковываю его с помощью проекта упаковки приложений Windows, подключаю его к магазину Windows, выбираю «Создать пакеты приложений..» и получаю полученный .appxbundle. Ладно пока. Я устанавливаю его локально. (также устанавливая сгенерированный сертификат (.cer), чтобы я мог установить его вообще.)

Как только я запускаю установленное приложение и нажимаю кнопку, запускающую приведенный выше код, в реестре ничего не меняется! Это не крашится, у меня есть попытка .. поймать код. Просто молча игнорирует.

Запуск из Visual Studio работает нормально, реестр обновляется.

На самом деле, все, что я хочу, это чтобы приложение запускалось при запуске Windows, меня не особо интересует, как этого добиться, поэтому любые идеи приветствуются!


Редактировать: я забыл сказать самое важное: это рабочий стол Windows, приложение Windows Forms. Это не приложение UWP, а окно, наследующее обычную System.Windows.Forms.Form, скомпилированную с помощью x86.

Ксавьер упоминает расширение StartupTask, это пакет nuget, но, похоже, он используется, когда у вас есть приложение UWP.


person Snorvarg    schedule 19.05.2019    source источник
comment
Я пытаюсь следовать примеру на docs.microsoft.com/ sv-se/uwp/api/, но я даже не знаю, в какой файл положить часть ‹Applications›...   -  person Snorvarg    schedule 20.05.2019


Ответы (1)


На самом деле, все, что я хочу, это чтобы приложение запускалось при запуске Windows, меня не особо интересует, как этого добиться, поэтому любые идеи приветствуются!

Вам необходимо использовать расширение windows.startupTask для упакованного приложения UWP. См. Запускать исполняемый файл, когда пользователи входят в Windows. С помощью этого расширения вы можете запускать свое приложение всякий раз, когда пользователь входит в систему.

Обратите внимание: пользователь должен запустить ваше приложение хотя бы один раз, чтобы зарегистрировать эту задачу запуска.

person Xie Steven    schedule 20.05.2019
comment
Извините, я забыл сказать: это рабочий стол Windows, приложение Windows Forms, поэтому это не приложение UWP. - person Snorvarg; 20.05.2019
comment
@Snorvarg Вы сказали: «Тогда я упакую это с помощью проекта упаковки приложений Windows». После того, как вы его упаковали, это приложение UWP. - person Xie Steven; 20.05.2019
comment
Да, это просто означает, что я этого не понимаю. Я попробовал этот пакет, установил его как nuget. Но примеры кода относятся к пространствам имен UWP. - person Snorvarg; 20.05.2019
comment
До сих пор я следовал этому руководству, оно работает до тех пор, пока мое приложение не захочет изменить реестр: docs.microsoft.com/sv-se/windows/uwp/porting/ - person Snorvarg; 20.05.2019
comment
@Snorvarg Я предложил вам прочитать соответствующие разделы «реестра» на Подготовьтесь к упаковке и За кулисами Desktop Bridge. - person Xie Steven; 21.05.2019