Вы упускаете важную деталь в своем вопросе. Но это не обязательно, чтобы ответить на вопрос, этот код может никогда работы. Чтобы написать этот раздел реестра, ваша программа должна работать с повышением UAC. Выполнено с помощью requireAdministrator в манифесте приложения. Если он отсутствует, OpenSubKey() будет генерировать исключение, и значение никогда не записывается. Легко видеть, конечно.
Если он не подведет, вы будете писать значение просто отлично, но программа не запустится при запуске. Windows не позволяет программам запрашивать повышение UAC при запуске, просто отказывается запускать их. Это серьезная проблема безопасности, пользователь понятия не имеет, откуда появилась подсказка о повышении уровня UAC и не может надежно дать согласие.
Вам необходимо , чтобы сделать это правильно. Два основных сценария:
- Ваша основная программа не работает повышенной, она запускает вспомогательную программу и запрашивает повышение UAC, чтобы она могла записывать реестр. Теперь нет проблем с запуском основной программы с помощью раздела реестра. Вероятно, вы видели программы, перед которыми есть кнопка со значком «щит».
- Ваша основная программа всегда работает с повышенным уровнем, ваш раздел реестра должен запускать вспомогательную программу, которая не запрашивает повышение UAC. Что мало, но дает кнопку для запуска основной программы. Окно согласия UAC теперь отображается сразу же после нажатия пользователем кнопки, Windows не возражает против этого, так как пользователь четко знает, что происходит. Если ваша машина проклята с помощью программного обеспечения Adobe, вы знаете, как это выглядит.
Первая пуля покрывает способ, которым все это делают: напишите ключ установщиком. Всегда отдельная программа, всегда работает приподнято.
@MickyDuncan вы хотели бы дать мне ответ –
Возможный дубликат http://stackoverflow.com/questions/3012151/how-to-put-exe-file-in-windows-startup – Khatibzadeh