jimmi
@jimmi

Как получить первоначального пользователя?

Имеется инсталлятор к которому приделан манифест с level="requireAdministrator", т.е. программа всегда запускается от администратора. Соответственно после такого запуска с под обычного (не админ) пользователя и попытке получить локальную директорию пользователя (SHGetFolderPath(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,@buf)) получаем локальную директорию администратора а не обычного пользователя где запустилась программа.
В SHGetFolderPath можно передать токен пользователя с которым мы хотим работать но если программа запущена от администратора(Elevated) то приходит ли токен обычного пользователя в программу?

С этого сразу же второй вопрос, так как программа запустилась от администратора, то как потом запустить другой ексешник через ShellExecute не от администратора?
До этого использовался метод "найди окно експлорера(CLASS_ShellWindows) и запусти от него" но какой-то он не кошерный, не уж то нету другого способа? Есть конечно вариант с CreateProcessWithTokenW но тут тупик в проблему номер 1 описанную выше, как получить этот токен если права программы повысились до админа.

Буду рад за любую помощь.
  • Вопрос задан
  • 2432 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы