У меня есть 32-битное приложение, которое пишет:
HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run
путь к моему приложению, чтобы он запускался при входе текущего пользователя. Это отлично работает на 32-битных системах (т.е. автозапуск приложения).
Я понимаю, что в 64-битных системах перенаправление реестра вступает в игру. Итак, я искал:
HKEY_CURRENT_USER \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run
но подраздел CurrentVersion не существует (хотя ключ Wow6432Node существует)! Итак, я создал его вручную, и мое приложение правильно записало в реестр (я вошел в реестр и проверил. Запись была там). НО, приложение не запускается автоматически при входе текущего пользователя. Может кто-нибудь сказать мне, почему?
Кстати, все это хорошо, если я использую ветку HKEY_LOCAL_MACHINE. Но я хочу, чтобы это зависело от пользователя.
Когда UAC включен и настроен на постоянное уведомление, это просто не работает (т.е. мое приложение не запускается автоматически). И нет, я не могу отключить UAC. Я требую, чтобы мое приложение играло хорошо с включенным контролем учетных записей и было настроено всегда уведомлять.
Если кто-то может сказать мне, почему, я с радостью забуду о необходимости использования реестра (я ненавижу реестр).
Я буду использовать API планировщика заданий для этого. Но я буду делать это только тогда, когда есть абсолютно другого пути нет.
Спасибо!
Невозможно запустить исполняемый файл, требующий повышения прав, из клавиши запуска пользователя или из папки «Автозагрузка». Увидеть Возвышения теперь заблокированы в пути входа пользователя из блога команды UAC.
Лучшее решение, вероятно, состоит в том, чтобы настроить исполняемый файл так, чтобы он не требовал повышения прав. Затем он может запустить собственную копию с повышенными правами, только если это действительно необходимо. Или вы можете использовать службу для задач, требующих повышения прав. Это единственный хороший подход, если вам нужно иметь возможность выполнять задачи с повышенными правами от имени пользователей, не имеющих прав администратора.
Другой вариант, поскольку вы можете успешно запустить процесс с помощью HKLM, будет запускать его для всех пользователей, но немедленно завершать, если это не тот пользователь, которого вы хотите.
HKEY_CURRENT_USER
разделяется между 32-битными и 64-битными приложениями (перенаправление и ключ Wow6432Node отсутствуют). Вот список с Ключи реестра, на которые влияет WOW64.