本文整理自网络,侵删。
{function CreateProcessWithLogonW( lpUsername, // user's name lpDomain, // user's domain lpPassword:PWideChar; // user's password dwLogonFlags:dword; // logon option lpApplicationName: PWideChar; lpCommandLine: PWideChar; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: tSTARTUPINFO; var lpProcessInformation: TProcessInformation ): BOOL; stdcall;external 'advapi32.dll'; }Function RunAsUser(const filename,username,password:string):boolean;var StartupInfo: tStartupInfo; ProcessInfo: TProcessInformation; wfilename,wusername,wpassword:pwidechar;begin FillChar (StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOWNORMAL; GetMem( wfilename, Length( filename ) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wusername, length(username) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wpassword, length(password) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; StringToWideChar( filename, wfilename, Length( filename ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( username, wusername, Length( username ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( password, wpassword, Length( password ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; result:=CreateProcessWithLogonW(wusername,nil,wpassword,0, wfilename, nil,0, nil, nil,StartupInfo , ProcessInfo); freemem(wfilename); freemem(wusername); freemem(wpassword);end;
RunAsUser('D:\Program Files (x86)\7-Zip\7zFM.exe','username','pass');
相关阅读 >>
Delphi d10.x 并行库ppl编程之 tparallel.for
更多相关阅读请进入《Delphi》频道 >>