1. Présentation

Un mot de passe permet de sécuriser un programme ou une partie d'un programme. Il permet de restraindre l'accès aux utilisateurs. Le ou les administrateur(s) ayant le mot de passe peut alors accèder à certaines options d'un programme ou à un programme tout entier.
Le mot de passe permet également d'identifier par le login (nom de l'utilisateur), la personne qui utilise l'application.

2. Description du programme

Lors de l'éxecution d'un programme, une boite de dialogue peut vous demander un mot de passe pour accèder aux programmes.
Pour concevoir une application offrant cette option, il faut tout d'abord choisir un mot de passe.
Il y a deux types de solutions suivant l'application que l'on veut effectuer :
- La première consiste à mettre le mot de passe dans le source du programme.
- La deuxième permet à l'administrateur de changer le mot de passe.

3. Mot de passe dans le source du programme

Ce programme est très facile à réaliser en Delphi.
Voici un aperçu du programme lors de son execution.

Image non disponible

Nous avons besoin de deux composants TButton, un TEdit et deux TLabel.
Disposez ces composants comme ci-dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.

 
Sélectionnez
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Bouton OK
  if Edit1.Text='delphi' then
    ShowMessage('Mot de passe correct !')
  else
    ShowMessage('Mot de passe incorrect !');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //Bouton Annuler
  Close;
end;

Télécharger le programme [5 Ko]

Astuce : Mettez * à la place de #0 dans la propriété PassWordChar du composant TEdit. Cela permettra de cacher le mot de passe lorsque l'utilisateur tapera le mot de passe.

3. Changer le mot de passe

Après avoir valider son mot de passe, l'administrateur pourra alors le changer. Il faut donc un moyen de sauvegarder le mot de passe car celui ci contrairement à l'exemple précèdent pourra changer.
Voici une capture de l'application.

Image non disponible

Nous avons besoin de deux composants TButton, un TEdit et deux TLabel. Disposez ces composants comme ci dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.

 
Sélectionnez
procedure TForm1.Button2Click(Sender: TObject);
begin
  //Bouton Annuler
  Close;
end;

La validation du changement de mot de passe se fait en cliquant sur le bouton OK.
On doit alors valider l'opération, si le texte(mot de passe) dans le Edit1 correspond à celui du texte du Edit2.

 
Sélectionnez

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Bouton Ok
  if Edit1.Text=Edit2.Text then
  begin
    ShowMessage('Le mot de passe est valide.');
  end else
    ShowMessage('Le mot de passe ne correspond pas à la confirmation.')
end;

Ensuite, il faut sauvegarder le mot de passe.
Je vous propose trois solutions pour l'enregistrement du mot de passe en utilisant :
- un fichier ini
- la base de registre

3.1. Fichier ini

Un fichier ini est utilisé pour sauvegarder une information. Dans notre exemple se sera le mot de passe.

 
Sélectionnez

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
begin
  //Bouton OK
  if Edit1.Text=Edit2.Text then //Si le mot de passe est bien le même alors...
  begin
    //On affiche un message indiquant que le mot de passe est valide
    ShowMessage('Le mot de passe est valide.');
    //Ouvre le fichier ini (si il n'éxiste pas, le fichier est alors créé)
    FichierIni:=TIniFile.Create('monfichier.ini');
    //Enregistre le mot de passe
    FichierIni.WriteString('Preference','Pass',Edit1.Text);
    //Détruit l'objet
    FichierIni.Free;
    Close;
  end else //Sinon...
    //On affiche un message indiquant qu'il y a une différence entre les deux edit
    ShowMessage('Le mot de passe ne correspond pas à la confirmation.');
end;

Le fichier ini sera par défaut dans le reperetoire Windows.]

Télécharger le programme [6 Ko]

3.2. Base de registres

La base de registre est aussi utiliser pour l'enregistrement de données.

 
Sélectionnez

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
begin
  //Bouton OK
  //Si le texte des deux edit est le même alors...
  if Edit1.Text=Edit2.Text then
  begin
    // Affiche un message indiquant que le mot de passe est valide
    ShowMessage('Le mot de passe est valide.');
    // Crée un objet TRegistry
    Registre:=TRegistry.Create;
    // Définit la clé principale
    Registre.RootKey:=HKEY_CLASSES_ROOT;
    // "OpenKey" ouvre une clé particulière (True signifie que
    // la clé est crée si elle n'existe pas}
    Registre.OpenKey('\MonRep',True);
    // Renvoie un string à partir du nom de la valeur
    Edit1.Text:=Registre.ReadString('Pass');
    // Ferme la clé
    Registre.CloseKey;
    // Détruit l'objet
    Registre.Free;
  end else //Sinon...
    //On affiche un message indiqant que le texte des deux edit est différent
    ShowMessage('Le mot de passe ne correspond pas à la confirmation.');
end;

Télécharger le programme [6 Ko]

4. Charger le mot de passe

Après avoir enregistrer le mot de passe, il faut maintenant le charger.

Image non disponible

Nous avons besoin de deux composants TButton, un TEdit et un TLabel.
Disposez les comme ci-dessus.

4.1. Fichier ini

 
Sélectionnez

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
    passe:string;
begin
  //Bouton OK
  //Crée le fichier ini si il n'existe pas
  FichierIni:=TIniFile.Create('Monfichier.ini');
  //Lit le contenu de "Pass" dans "Preference" du fichier ini
  passe:=FichierIni.ReadString('Preference','Pass',Edit1.Text);
  //Détruit l'objet
  FichierIni.Free;
  //Si le mot de passe correspond alors...
  if Edit1.Text=passe then
  begin
    //Affiche un message indiquant que le mot de passe est correct
    ShowMessage('Le mot de passe est valide.');
    //J'effectue ce que je veux...
    Close; //Quitte l'application
  end else
    //Affiche un message indiquant que le mot de passe est incorrect
    ShowMessage('Le mot de passe est incorrect.');
end;

Télécharger le programme [6 Ko]

4.2. Base de registres

 
Sélectionnez

uses Regitry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
    pass     : string;
begin
  //Bouton OK
  //Crée un objet TRegistry
  Registre:=TRegistry.Create;
  //Définit la clé principale
  Registre.RootKey:=HKEY_CLASSES_ROOT;
  //"OpenKey" ouvre une clé particulière (False signifie que la
  // clé n'est pas crée si elle n'existe pas
  Registre.OpenKey('\MonRep',False);
  //Renvoie un string à partir du nom de la valeur
  Edit1.Text:=Registre.ReadString('Pass');
  //Ferme la clé
  Registre.CloseKey;
  //Détruit l'objet
  Registre.Free;
  //Si le mot de passe correspond alors...
  if Edit1.Text=pass then
  begin
    //Affiche un message indiquant que le mot de passe est correct
    ShowMessage('Le mot de passe est valide.');
    //J'effectue ce que je veux...
    Close; //Quitte l'application
  end else //Sinon...
    //Affiche un message indiquant que le mot de passe est incorrect
    ShowMessage('Le mot est incorrect.');
end;

Télécharger le programme [6 Ko]

Astuce : Pour plus de sécutité, vous pouvez crypter votre mot de passe pendant l'enregistrement puis le décrypter avant la comparaison.