Задать вопрос
jimmi
@jimmi

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

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

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

Буду рад за любую помощь.
  • Вопрос задан
  • 2435 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Merion Academy
    Администрирование MS Windows Server
    1 месяц
    Далее
  • Skillbox
    Системный администратор с нуля
    6 месяцев
    Далее
  • Нетология
    Инженер по автоматизации
    13 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы