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

Description

Je cherchais du code en Delphi pour connaitre le propriétaire d'un fichier, mais je n'ai trouvé que du code C.
http://www.cppfrance.com/article.aspx?ID=2224
J'ai donc fait une petite transcription en Pascal, pour ce que cela intéresse.
Ça utilise les API de sécurité de Windows NT pour connaitre le nom d'utilisateur ainsi que son domaine.

Source / Exemple :


procedure FileSecurityInfos(FileName: String;
  var AccountName, DomainName: String);
var
  fic: PChar;
  ssd: DWORD;
  psd: PSECURITY_DESCRIPTOR;
  sid: PSID;
  pFlag: BOOL;
  saccount: DWORD;
  account: PChar;
  sdomain: DWORD;
  domain: PChar;
  snu: SID_NAME_USE;
begin
  fic := PChar(FileName);
  GetFileSecurity(fic, OWNER_SECURITY_INFORMATION, nil, 0, ssd);
  psd := Pointer(GlobalAlloc(GMEM_FIXED, ssd));
  GetFileSecurity(fic, OWNER_SECURITY_INFORMATION, psd, ssd, ssd);
  GetSecurityDescriptorOwner(psd, sid, pFlag);
  LookupAccountSid(nil, sid, account, saccount, domain, sdomain, snu);
  account := Pointer(GlobalAlloc(GMEM_FIXED, saccount));
  domain := Pointer(GlobalAlloc(GMEM_FIXED, sdomain));
  LookupAccountSid(nil, sid, account, saccount, domain, sdomain, snu);
  AccountName := account;
  DomainName := domain;
end;

Conclusion :


Programme tout simple. À adapter si vous voulez l'inclure dans un projet.

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.