 |
|
 |
|
 |
51 - MODIFIER LES DROITS D'UN COMPTE
|
|
|
|
PRÉSENTATION :
Modifier les droits d'un compte sous NT/2000/Xp
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, 0, 0, 0);
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.
|