Это неуправляемый код, поэтому вам нужно использовать P / Invoke (Platform Invoke), вот подпись функции для CreateProcessWithTokenW()
:
[DllImport("advapi32", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool CreateProcessWithTokenW(
IntPtr hToken,
LogonFlags dwLogonFlags,
string lpApplicationName,
string lpCommandLine,
CreationFlags dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
[In] ref STARTUPINFO lpStartupInfo,
out PROCESS_INFORMATION lpProcessInformation);
Вы можете использовать перечисление вот так, чтобы передать параметр LogonFlags
(чтобы сохранить чувство .net :)):
public enum LogonFlags
{
WithProfile = 1,
NetCredentialsOnly
}
Вот перечисление для CreationFlags
в соответствии с доступной документацией здесь :
public enum CreationFlags
{
DefaultErrorMode = 0x04000000,
NewConsole = 0x00000010,
NewProcessGroup = 0x00000200,
SeparateWOWVDM = 0x00000800,
Suspended = 0x00000004,
UnicodeEnvironment = 0x00000400,
ExtendedStartupInfoPresent = 0x00080000
}