home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 April / Chip_2002-04_cd1.bin / zkuste / delphi / kolekce / d56 / NT.ZIP / NTLogon.pas < prev    next >
Pascal/Delphi Source File  |  2002-01-17  |  2KB  |  76 lines

  1. unit NTLogon;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
  7.  
  8. type
  9.   TNTLogon = class(TComponent)
  10.   private
  11.     { Private declarations }
  12.     FUserName:String;
  13.     FDomain:String;
  14.     FPassword:String;
  15.     FLogonType:DWORD;
  16.     FLogonProvider:DWORD;
  17.     FError:DWORD;
  18.     FUserToken:THandle;
  19.   protected
  20.     { Protected declarations }
  21.   public
  22.     { Public declarations }
  23.   published
  24.     { Published declarations }
  25.     property UserName:String read FUserName write FUserName;
  26.     property DomainName:String read FDomain write FDomain;
  27.     property Password:String read FPassword write FPassword;
  28.     property LogonType:DWORD read FLogonType write FLogonType;
  29.     property LogonProvider:DWORD read FLogonProvider write FLogonProvider;
  30.     property ErrorCode:DWORD read FError;
  31.     property UserToken:THandle read FUserToken;
  32.     function Logon:Boolean;
  33.   end;
  34.  
  35. procedure Register;
  36.  
  37. implementation
  38.  
  39. function TNTLogon.Logon:Boolean;
  40. var TmpD:String;
  41. begin
  42.      If FDomain='' Then
  43.      Begin
  44.           If Pos('@',FUserName)>0 Then
  45.           Begin
  46.                If Not LogonUser(PChar(FUserName),nil,PChar(FPassword),FLogonType,FLogonProvider,FUserToken) Then
  47.                Begin
  48.                     FError:=GetLastError;
  49.                     Result:=False;
  50.                End Else
  51.                Begin
  52.                     FError:=0;
  53.                     Result:=True;
  54.                End;
  55.                Exit;
  56.           End;
  57.      End;
  58.      TmpD:='.';
  59.      If Not LogonUser(PChar(FUserName),PChar(TmpD),PChar(FPassword),FLogonType,FLogonProvider,FUserToken) Then
  60.      Begin
  61.           FError:=GetLastError;
  62.           Result:=False;
  63.      End Else
  64.      Begin
  65.           FError:=0;
  66.           Result:=True;
  67.      End;
  68. end;
  69.  
  70. procedure Register;
  71. begin
  72.   RegisterComponents('NT Tools - Additional', [TNTLogon]);
  73. end;
  74.  
  75. end.
  76.