C# CreateProcessWithTokenW-C中的用法示例#

C# CreateProcessWithTokenW-C中的用法示例#,c#,winapi,C#,Winapi,我正在尝试使用CreateProcessWithTokenW()win32 API函数来启动带有令牌的新进程。问题是,我对win32 API非常陌生,不知道如何正确使用函数,以及需要哪些结构等。有人能给我举个例子说明如何在C#?中正确使用函数吗这是非托管代码,因此您需要使用p/Invoke(平台调用),下面是CreateProcessWithTokenW()的函数签名。: 您可以使用这样的枚举传入LogonFlagsparam(以保持.net的感觉:): 以下是可用文档中的CreationFla

我正在尝试使用
CreateProcessWithTokenW()
win32 API函数来启动带有令牌的新进程。问题是,我对win32 API非常陌生,不知道如何正确使用函数,以及需要哪些结构等。有人能给我举个例子说明如何在C#?

中正确使用函数吗这是非托管代码,因此您需要使用p/Invoke(平台调用),下面是
CreateProcessWithTokenW()的函数签名。

您可以使用这样的枚举传入
LogonFlags
param(以保持.net的感觉:):

以下是可用文档中的
CreationFlags
枚举:


您想从哪里获取代币?到底是什么驱使您使用此函数?我猜您正在尝试执行此处所述的操作:有关更多信息,请参阅p/invoke.net上的此函数:
[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);
public enum LogonFlags
{
     WithProfile = 1,
     NetCredentialsOnly
}
public enum CreationFlags
{
    DefaultErrorMode = 0x04000000,
    NewConsole = 0x00000010,
    NewProcessGroup = 0x00000200,
    SeparateWOWVDM = 0x00000800,
    Suspended = 0x00000004,
    UnicodeEnvironment = 0x00000400,
    ExtendedStartupInfoPresent = 0x00080000
}