CreateProcessWithTokenW успешно, но выдает ошибку и процесс не запускается

Я пытаюсь запустить powershell /cmd как "LocalService" из контекста "LocalSystem", чтобы использовать более низкие привилегии в вызываемом скрипте. Я вызываю P/Invoke в следующем порядке:

LogonUser() // вход в LocalService - успех

CreateEnvironmentBlock() // успех

DuplicateTokenEx() // для создания PrimaryToken

CreateProcessWithTokenW() // создаем ps / cmd

CreateProcessWithTokenW() Код C#:

PROCESS_INFORMATION pi = new PROCESS_INFORMATION { };
STARTUPINFO st = new STARTUPINFO();
st.cb = (uint)Marshal.SizeOf(st);
st.wShowWindow = 0;
st.lpDesktop = ""; // creates automatically
const int CREATE_UNICODE_ENVIRONMENT = 0x00000400;
const int CREATE_NO_WINDOW = 0x08000000;
const UInt32 FLAGS =  (CREATE_NO_WINDOW |CREATE_UNICODE_ENVIRONMENT) ;
const int LOGON_WITH_PROFILE = 0x00000001;
CreateProcessWithTokenW(token, LOGON_WITH_PROFILE ,path, args,FLAGS, IntPtr.Zero, null, ref st, out pi)

Этот код возвращает успех при создании процесса, но выдает следующую ошибку:

Кто-нибудь сталкивался с этой ошибкой? Я также пробовал использовать CreateProcessAsUser(), но он также возвращает успех, запускает процесс, но процесс сразу закрывается (возможен сбой).

0 ответов

Другие вопросы по тегам