2015-04-12 4 views
0

Я хочу добавить приложение в систему Windows с программным обеспечением. Я использую приведенный ниже код. Но когда я закрываю и запускаю Windows снова, мое приложение не запускается.Добавить приложение для запуска Windows в C#?

public static void AddApplicationToStartup() 
    { 
    using (RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true)) 
     { 
     key.SetValue("My Program", "\"" + Application.ExecutablePath + "\""); 
     } 
    } 
+0

@MickyDuncan вы хотели бы дать мне ответ –

+0

Возможный дубликат http://stackoverflow.com/questions/3012151/how-to-put-exe-file-in-windows-startup – Khatibzadeh

ответ

2

Вы упускаете важную деталь в своем вопросе. Но это не обязательно, чтобы ответить на вопрос, этот код может никогда работы. Чтобы написать этот раздел реестра, ваша программа должна работать с повышением UAC. Выполнено с помощью requireAdministrator в манифесте приложения. Если он отсутствует, OpenSubKey() будет генерировать исключение, и значение никогда не записывается. Легко видеть, конечно.

Если он не подведет, вы будете писать значение просто отлично, но программа не запустится при запуске. Windows не позволяет программам запрашивать повышение UAC при запуске, просто отказывается запускать их. Это серьезная проблема безопасности, пользователь понятия не имеет, откуда появилась подсказка о повышении уровня UAC и не может надежно дать согласие.

Вам необходимо , чтобы сделать это правильно. Два основных сценария:

  • Ваша основная программа не работает повышенной, она запускает вспомогательную программу и запрашивает повышение UAC, чтобы она могла записывать реестр. Теперь нет проблем с запуском основной программы с помощью раздела реестра. Вероятно, вы видели программы, перед которыми есть кнопка со значком «щит».
  • Ваша основная программа всегда работает с повышенным уровнем, ваш раздел реестра должен запускать вспомогательную программу, которая не запрашивает повышение UAC. Что мало, но дает кнопку для запуска основной программы. Окно согласия UAC теперь отображается сразу же после нажатия пользователем кнопки, Windows не возражает против этого, так как пользователь четко знает, что происходит. Если ваша машина проклята с помощью программного обеспечения Adobe, вы знаете, как это выглядит.

Первая пуля покрывает способ, которым все это делают: напишите ключ установщиком. Всегда отдельная программа, всегда работает приподнято.

+0

Ваш ответ это здорово, но вы хотите дать мне исходный код, я действительно нуждаюсь в нем. Будет здорово, если бы вы могли мне помочь. Спасибо –

+0

Сосредоточьтесь на последнем абзаце, не пишите никакого кода. –

Смежные вопросы