@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Creates a new process, using the creditials supplied by hToken. The application opened is running under the credentials and authority for the user supplied to LogonUser. !!!!C# Signature: [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] static extern bool CreateProcessAsUser( IntPtr hToken, string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); !!!!VB Signature : Private Declare Auto Function CreateProcessAsUser Lib "advapi32" ( _ ByVal hToken As IntPtr, _ ByVal strApplicationName As String, _ ByVal strCommandLine As String, _ ByRef lpProcessAttributes as SECURITY_ATTRIBUTES, _ ByRef lpThreadAttributes as SECURITY_ATTRIBUTES, _ ByVal bInheritHandles as Boolean, _ ByVal dwCreationFlags As Integer, _ ByVal lpEnvironment As IntPtr, _ ByVal lpCurrentDriectory As String, _ ByRef lpStartupInfo As STARTUPINFO, _ ByRef lpProcessInformation As PROCESS_INFORMATION) As Boolean !!!!VB Signature: <DllImport("Advapi32.dll", ExactSpelling:=False, SetLastError:=True, CharSet:=CharSet.Unicode)> _ Private Shared Function CreateProcessAsUser( _ ByVal hToken As IntPtr, _ ByVal lpApplicationName As String, _ <[In](), Out(), [Optional]()> ByVal lpCommandLine As StringBuilder, _ ByVal lpProcessAttributes As IntPtr, _ ByVal lpThreadAttributes As IntPtr, _ <MarshalAs(UnmanagedType.Bool)> ByVal bInheritHandles As Boolean, _ ByVal dwCreationFlags As Integer, _ ByVal lpEnvironment As IntPtr, _ ByVal lpCurrentDirectory As String, _ <[In]()> ByRef lpStartupInfo As StartupInfo, _ <Out()> ByRef lpProcessInformation As PROCESS_INFORMATION) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function !!!!User-Defined Types: [SECURITY_ATTRIBUTES] [PROCESS_INFORMATION] [STARTUPINFO] [LOGON_TYPE] [LOGON_PROVIDER] [CREATE_PROCESS_FLAGS] !!!!Notes: Use StringBuilder for lpCommandLine parameter for unicode version of this function. The Unicode version of this function, CreateProcessAsUserW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation. !!!!Tips & Tricks: Please add some! !!!!C# Sample Code: // Declare variables PROCESS_INFORMATION pi; STARTUPINFO si; System.IntPtr hToken; // Initialize structs si.cb = Marshal.SizeOf(si); // Get the user token if (LogonUser(userPart, domainPart, password, LOGON_TYPE.LOGON32_LOGON_BATCH, LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT, hToken)) { // Create structs SECURITY_ATTRIBUTES saProcessAttributes = new SECURITY_ATTRIBUTES(); SECURITY_ATTRIBUTES saThreadAttributes = new SECURITY_ATTRIBUTES(); // Now create the process as the user if (!CreateProcessAsUser(hToken, String.Empty, commandLine, null, saThreadAttributes, false, 0, IntPtr.Zero, 0, si, pi)) { // Throw exception throw new Exception("Failed to CreateProcessAsUser"); } } !!!!VB Sample Code: Dim pi As PROCESS_INFORMATION Dim si As STARTUPINFO si.cb = Marshal.SizeOf(si) Dim hToken as System.IntPtr If LogonUser(userPart, domainPart, password, LOGON_TYPE.LOGON32_LOGON_BATCH, _ LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT, hToken) Then Dim saProcessAttributes as SECURITY_ATTRIBUTES = new SECURITY_ATTRIBUTES Dim saThreadAttributes as SECURITY_ATTRIBUTES = new SECURITY_ATTRIBUTES If Not CreateProcessAsUser(hToken, "", strCmdLine, Nothing, _ saThreadAttributes, False, 0, IntPtr.Zero, 0, si, pi) Then Throw New Exception(Err.Description) End If End If !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: http://support.microsoft.com/kb/165194 http://search.microsoft.com/en-AU/results.aspx?q=CreateProcessAsUser&qsc0=MSDN on MSDN
Edit advapi32.CreatePr...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.