Олицетворение и управление реестром в Vista \ Win7 - PullRequest
0 голосов
/ 04 октября 2009

Мне нужно создать программу, которая имеет доступ к HKLM при запуске в сеансе без прав администратора. У меня есть доступ к учетным данным администратора, поэтому представляется возможным подражать им. Последовательность вызовов Win32:

  1. LogonUser
  2. ImpersonateLoggedOnUser
  3. RegOpenKeyEx
  4. RegCreateKeyEx

Ключ успешно создан в XP / 2003 и завершается с ошибкой «Отказано в доступе» в Vista / Win7. Я работаю как один и тот же пользователь домена по умолчанию и выдаю себя за одного и того же администратора домена в каждом из сценариев. «Отказано в доступе» генерируется RegCreateKeyEx и, очевидно, ключ не создается.

Кто-нибудь знает, почему это происходит?

Ответы [ 5 ]

1 голос
/ 12 октября 2009

Администратор в Windows Vista / 7 по умолчанию также не имеет доступа для записи в HKLM, он должен сначала подняться. См. Vista UAC: полное руководство для получения подробной информации о запуске нового процесса с повышенными правами, поскольку вы не можете повысить уровень существующего процесса.

1 голос
/ 05 октября 2009

Если у вас есть имя пользователя / пароль для пользователя с правами администратора, вы можете запустить вспомогательный процесс с помощью CreateProcessWithLogonW () и взаимодействовать с ним с помощью какого-либо IPC (каналы, общая память + события и т. Д.)

Что касается того, почему он терпит неудачу в NT6, возможно, ваше олицетворение не дает вам высокий IL

0 голосов
/ 13 октября 2009

Способ сделать это - через несколько процессов, как предлагали Мюррей и Андерс. Сначала вы запускаете процесс для запуска другого процесса с помощью CreateProcessAsLoggedOnUser с учетными данными администратора. Затем вы должны запустить ДРУГОЙ процесс, используя функцию ShellExecute с «runas», указанным в качестве глагола. Это позволяет выполнять олицетворение и повышение прав без диалога UAC.

0 голосов
/ 04 октября 2009

AFAIK Для доступа к HKLM в Vista / Windows7 у вас должны быть права администратора. Попробуйте скомпилировать программу с опцией - требовать права администратора или просто запустить программу от имени администратора.

0 голосов
/ 04 октября 2009

В Vista / Win7 безопасность изменилась. См. Эту статью о виртуализации реестра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...