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(), но он также возвращает успех, запускает процесс, но процесс сразу закрывается (возможен сбой).