C#中的使用示例

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


这是非托管代码,因此您需要使用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参数(以保持.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
}
链接地址: http://www.djcxy.com/p/56271.html

上一篇: Example of usage in C#

下一篇: How to detect if a connected USB printer is on or off?