[DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern bool CreateProcessAsUser(
IntPtr hToken,
string lpApplicationName,
[In] StringBuilder lpCommandLine,
ref SECURITY_ATTRIBUTES lpProcessAttributes,
ref SECURITY_ATTRIBUTES lpThreadAttributes,
bool bInheritHandles,
uint dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
ref STARTUPINFO lpStartupInfo,
out PROCESS_INFORMATION lpProcessInformation);
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
[Enums.CREATE_PROCESS_FLAGS]
None.
Please add some!
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
Do you know one? Please contribute it!