我正在尝试使用CreateProcessWithTokenW()
win32 API函数来启动带有令牌的新进程。问题是我对win32 API很新,我不知道如何正确使用该函数,以及需要哪些结构等。有人可以给我一个如何在C#中正确使用该函数的例子吗?
答案 0 :(得分:5)
这是非托管代码,因此您需要使用P / 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
param(以保持.net的感觉:) :):
public enum LogonFlags
{
WithProfile = 1,
NetCredentialsOnly
}
以下是可用文档here后CreationFlags
的枚举:
public enum CreationFlags
{
DefaultErrorMode = 0x04000000,
NewConsole = 0x00000010,
NewProcessGroup = 0x00000200,
SeparateWOWVDM = 0x00000800,
Suspended = 0x00000004,
UnicodeEnvironment = 0x00000400,
ExtendedStartupInfoPresent = 0x00080000
}