Доброе время суток! У меня назрел вопрос: как можно запустить процесс от другого пользователя не имея пароля и логина пользователя? (мой процесс имеет права SYSTEM) и я знаю что пользователь уже зашел в систему Заранее Спасибо!
Найти токен этой учетки (выдрать у процесса, запущенного под этим пользователем) и запускать новый процесс с этим токеном. Хотя я не пробовал, чисто предположение
xp+ WTSGetActiveConsoleSessionId WTSQueryUserToken CreateEnvironmentBlock CreateProcessAsUser DestroyEnvironmentBlock
Great как найти процесс запущенной под учеткой? CreateToolhelp32Snapshot - это понятно, но как определить учетную запись под которой запущенной процесс ? djmans WTSQueryUserToken - из за некоторых причин, не могу юзать функцию. CreateEnvironmentBlock - как я понял нужно создавать, а удалять нужно сразу после создание процесса или нужно ждать пока процесс закроется? Заранее Спасибо!
>как определить учетную запись под которой запущенной процесс ? GetTokenInformation(TokenUser), GetTokenInformation(TokenSessionId) и т.д >а удалять нужно сразу после создание процесса или нужно ждать пока процесс закроется? сразу, оно просто скопируется в новый процесс и более не нужно. Те интерактивный юзер нужен или нет?
AntiB То базу fs найти без выполнения инструкций, то функции вызывать нельзя... Таки каковы причины невозможности вызова WTSQueryUserToken, если не секрет? Ещё набор: OpenProcessToken, DuplicateTokenEx; NtCreateToken [SeCreateToken privilege]; CreateProcess(SUSPENDED) + NtSetInformationProcess(ProcessAccessToken) [SeAssignPrimaryToken privilege].
djmans да, интерактивный Sol_Ksacap так как возвращает мне ошибку. А с OpenProcessToken, DuplicateTokenEx уже разобрался Осталось только найти подходящий процесс и взять его токен.
>так как возвращает мне ошибку. так и нужно писать. я вспомнил еще что, вроде тебе нужно предварительно переключиться на активный десктоп(SetThreadDesktop). а потом уже юзать WTS*.