Obtenir le propriétaire d'un fichier (ntfs)

Description

Sélectionnez un fichier, et vous verrez à qui il appartient (login et domaine), si vous avez les droits pour y accéder, bien sûr...

Source / Exemple :


// Procédure principale (qui fait tout le boulot)
procedure TNTForm.EditFileChange(Sender: TObject);
var
  ssd: Cardinal;
  psd: PSecurityDescriptor;
  psid: Pointer;
  flags: LongBool;
  saccount: Cardinal;
  account: PChar;
  sdomain: Cardinal;
  domain: PChar;
  snu: Cardinal;
begin
  GetFileSecurity(PChar(EditFile.Text), OWNER_SECURITY_INFORMATION, nil, 0, ssd);
  psd := AllocMem(ssd);
  GetFileSecurity(PChar(EditFile.Text), OWNER_SECURITY_INFORMATION, psd, ssd, ssd);
  GetSecurityDescriptorOwner(psd, psid, flags);
  LookupAccountSid(nil, psid, nil, saccount, nil, sdomain, snu);
  account := AllocMem(saccount);
  domain := AllocMem(sdomain);
  LookupAccountSid(nil, psid, account, saccount, domain, sdomain, snu);
  LabelOwnerName.Caption := account;
  LabelDomainName.Caption := domain;
  FreeMem(psd);
  FreeMem(account);
  FreeMem(domain);
end;

Conclusion :


Il n'y a aucun contrôle d'erreur, pour simplifier.

J'avais commencé par une version C, et j'ai voulu voir ce que çà donnerait avec Delphi... Pour les IHM, y'a pas photo, Delphi, pour la taille, C.

Version C : http://www.cppfrance.com/article.aspx?Val=2224

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.