Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES ARTICLES NONOVISU ACCUEIL NOUVELLES
Retour à l'accueil
51 - MODIFIER LES DROITS D'UN COMPTE

PRÉSENTATION : Modifier les droits d'un compte sous NT/2000/Xp
ZIP : Téléchargez le zip : miroir 1 , miroir 2 APERÇUS :

NOTES : Ce source à pour but de montrer comment modifier les droits d'un compte pour des fonctions particulières. Par exemple pour la sauvegarde d'une partie de la base de registre un compte doit avoir le droit SE_BACKUP_NAME.

L'utilsation de la fonction ci-dessous est simple :
- Pour activer un droit :
LoggedSetPrivilege(GetCurrentProcess,'SeBackUpPrivilege',True);
- Pour desactiver un droit :
LoggedSetPrivilege(GetCurrentProcess,'SeBackUpPrivilege',False);


CODE :
Function _AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
  NewState: PTokenPrivileges; BufferLength: DWORD;
  PreviousState: Integer; ReturnLength: Integer): BOOL;stdcall; external advapi32 name 'AdjustTokenPrivileges';

Function LoggedSetPrivilege ( hProcess:THANDLE;Droit:String;bEnable:Boolean):Boolean;
Var
  Info  : TTokenPrivileges;
  Token : THandle;
  Res   : Boolean;
Begin
  // Ouverture des droits du compte
  Res := OpenProcessToken ( hProcess,TOKEN_ADJUST_PRIVILEGES,Token);

  If Not Res Then
  Begin
    ShowMessage('Ouverture des droits impossible' );
    Result:=False;
    Exit;
  End;

  // Enable ou disable?
  Info.PrivilegeCount := 1;
  If  bEnable
    Then Info.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
    Else Info.Privileges[0].Attributes := 0;

  // Obtenir le LUID du droit dont on veut changer l'état.
  Res := LookupPrivilegeValue ( Nil,Pchar(Droit),Info.Privileges[0].Luid);
  If Not Res Then
  Begin
    ShowMessage('Impossible d''obtenir le LUID de '+Droit );
    Result:=False;
    Exit;
  End;

  // Modification du droit
  Res := _AdjustTokenPrivileges ( Token, FALSE,@Info, 000);
  If Not Res Then
  Begin
    ShowMessage('Impossible de modifier le droit, erreur '+IntToStr(GetLastError));
    Result:=False;
    Exit;
  End
  Else
  Begin
    If GetLastError<>ERROR_SUCCESS Then
    Begin
      ShowMessage('Impossible d''activer le droit '+Droit+', vérifiez la gestion locale des comptes.');
      Result:=False;
      Exit;
    End;
  End;

  CloseHandle( Token );

  Result:=True;
End;

Les sources présentées sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique Delphi : Nono40 et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.