减小字体
增大字体
【收藏到ViVi】【收藏到YouNote】【收藏此页到365Key】【
收藏此页到bbmao】
type _STARTUPINFOW = record cb: DWORD; lpReserved: LPWSTR; lpDesktop: LPWSTR; lpTitle: LPWSTR; dwX: DWORD; dwY: DWORD; dwXSize: DWORD; dwYSize: DWORD; dwXCountChars: DWORD; dwYCountChars: DWORD; dwFillAttribute: DWORD; dwFlags: DWORD; wShowWindow: Word; cbReserved2: Word; lpReserved2: PByte; hStdInput: THandle; hStdOutput: THandle; hStdError: THandle; end; STARTUPINFOW = _STARTUPINFOW;
function CreateProcessWithLogonW(lpUserName, lpDomain, lpPassword: LPCWSTR; dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPCWSTR; const lpStartupInf STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall; external advapi32 Name 'CreateProcessWithLogonW'
procedure TForm1.Button2Click(Sender: TObject); var STARTUPINF StartupInfoW; ProcessInf TProcessInformation; AUser, ADomain, APass, AExe: WideString; const LOGON_WITH_PROFILE = $00000001; LOGON_NETCREDENTIALS_ONLY = $00000002; begin FillChar(STARTUPINFO, SizeOf(StartupInfoW), #0); STARTUPINFO.cb := SizeOf(StartupInfoW); STARTUPINFO.dwFlags := STARTF_USESHOWWINDOW; STARTUPINFO.wShowWindow := SW_SHOW; AUser := edtUser.Text; ADomain := edtDomain.Text; APass := edtPass.Text; AExe := edtExe.Text; if not CreateProcessWithLogonW(PWideChar(AUser), PWideChar(ADomain), PWideChar(APass), LOGON_WITH_PROFILE, nil, PWideChar(AExe), NORMAL_PRIORITY_CLASS, nil, nil, STARTUPINFO, ProcessInfo) then RaiseLastOSError; end;
已经测试通过
|