Как автоматически запустить программу для конкретного пользователя, используя ключ CurrentVersion \ Run в реестре?

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

Спасибо!

4

Решение

Невозможно запустить исполняемый файл, требующий повышения прав, из клавиши запуска пользователя или из папки «Автозагрузка». Увидеть Возвышения теперь заблокированы в пути входа пользователя из блога команды UAC.

Лучшее решение, вероятно, состоит в том, чтобы настроить исполняемый файл так, чтобы он не требовал повышения прав. Затем он может запустить собственную копию с повышенными правами, только если это действительно необходимо. Или вы можете использовать службу для задач, требующих повышения прав. Это единственный хороший подход, если вам нужно иметь возможность выполнять задачи с повышенными правами от имени пользователей, не имеющих прав администратора.

Другой вариант, поскольку вы можете успешно запустить процесс с помощью HKLM, будет запускать его для всех пользователей, но немедленно завершать, если это не тот пользователь, которого вы хотите.

0

Другие решения

HKEY_CURRENT_USER разделяется между 32-битными и 64-битными приложениями (перенаправление и ключ Wow6432Node отсутствуют). Вот список с Ключи реестра, на которые влияет WOW64.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector