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
}