2
0
Exilon 4 жил өмнө
parent
commit
cea1a908fe
1 өөрчлөгдсөн 21 нэмэгдсэн , 1 устгасан
  1. 21 1
      Quick.Process.pas

+ 21 - 1
Quick.Process.pas

@@ -7,7 +7,7 @@
   Author      : Kike Pérez
   Author      : Kike Pérez
   Version     : 1.5
   Version     : 1.5
   Created     : 14/07/2017
   Created     : 14/07/2017
-  Modified    : 04/07/2018
+  Modified    : 15/12/2020
 
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
 
@@ -61,6 +61,10 @@ uses
   function KillProcess(aProcessId : Cardinal) : Boolean; overload;
   function KillProcess(aProcessId : Cardinal) : Boolean; overload;
   //run process as Admin privilegies
   //run process as Admin privilegies
   function RunAsAdmin(hWnd: HWND; const aFilename, aParameters: string): Boolean;
   function RunAsAdmin(hWnd: HWND; const aFilename, aParameters: string): Boolean;
+  //impersonate logon
+  function Impersonate(const aDomain, aUser, aPassword : string): Boolean;
+  //revert logon to real logged user
+  procedure RevertToSelf;
   //remove dead icons from taskbar tray
   //remove dead icons from taskbar tray
   procedure RemoveDeadIcons;
   procedure RemoveDeadIcons;
   //get a process of running processes
   //get a process of running processes
@@ -260,6 +264,22 @@ begin
   {$ENDIF}
   {$ENDIF}
 end;
 end;
 
 
+function Impersonate(const aDomain, aUser, aPassword : string): Boolean;
+var
+  htoken : THandle;
+begin
+  Result := False;
+  if LogonUser(PChar(aUser),PChar(aDomain),PChar(aPassword),LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,htoken) then
+  begin
+    Result := ImpersonateLoggedOnUser(htoken);
+  end;
+end;
+
+procedure RevertToSelf;
+begin
+  Windows.RevertToSelf;
+end;
+
 procedure RemoveDeadIcons;
 procedure RemoveDeadIcons;
 var
 var
   TrayWindow : HWnd;
   TrayWindow : HWnd;