Hello, If you don't want to use my component TYRPasswd, you are still able to use directly the DLL called PASSWORD.DLL . The way to proceed is the following : 1) Put the files PASSWORD.DLL and PASSWORD.INI in the directory of your application (or in the windows/system directory if you want to protect several applications with the same password). 2) In the main form of your application, do the following : unit Maindemo; interface uses SysUtils, WinTypes, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl, Buttons; type ... var ... {------------------------- HERE ----------------------------} const PasswordLoaded : Boolean = False; { Presume nothing! } var Login: function(var UserN : String ; var PriorityL : Integer ; IniFileName,SectionName : String) : WordBool ; { <--- THE BOOLEAN FUNCTION } UserName : String ; UserLevel : Integer ; implementation {$R *.DFM} {$IFDEF WINDOWS} uses WinProcs; Const SEM_NoOpenFileErrorBox = $8000; {$ELSE} uses WinAPI; {$ENDIF} var SaveExit: pointer; DLLHandle: Word; procedure NewExit; far; begin ExitProc := SaveExit; FreeLibrary(DLLHandle) end {NewExit}; procedure TDemoForm.FormCreate(Sender: TObject); begin {$IFDEF WINDOWS} SetErrorMode(SEM_NoOpenFileErrorBox); {$ENDIF} DLLHandle := LoadLibrary('PASSWORD.DLL'); If DLLHandle >= 32 then { Succes } Begin PasswordLoaded := True; SaveExit := ExitProc; ExitProc := @NewExit; @Login := GetProcAddress(DLLHandle,'MOTDEPASSE'); If not Login(UserName,UserLevel,'password.ini','Users') then Application.Terminate else Begin { initialization } Color := clGreen ; { Just for the DEMO } End ; End else Begin MessageDlg('Fichier PASSWORD.DLL introuvable!', mtInformation,[mbOk], 0) ; Application.Terminate ; End ; end; {------------------------- HERE ----------------------------} ... end.