首页  编辑  

获取文件的拥有者

Tags: /超级猛料/Stream.File.流、文件和目录/文件操作/   Date Created:

// When you create a file or directory, you become the owner of it.

// With GetFileOwner you get the owner of a file.

function GetFileOwner(FileName: string;

 var Domain, Username: string): Boolean;

var

 SecDescr: PSecurityDescriptor;

 SizeNeeded, SizeNeeded2: DWORD;

 OwnerSID: PSID;

 OwnerDefault: BOOL;

 OwnerName, DomainName: PChar;

 OwnerType: SID_NAME_USE;

begin

 GetFileOwner := False;

 GetMem(SecDescr, 1024);

 GetMem(OwnerSID, SizeOf(PSID));

 GetMem(OwnerName, 1024);

 GetMem(DomainName, 1024);

 try

   if not GetFileSecurity(PChar(FileName),

     OWNER_SECURITY_INFORMATION,

     SecDescr, 1024, SizeNeeded) then

     Exit;

   if not GetSecurityDescriptorOwner(SecDescr,

     OwnerSID, OwnerDefault) then

     Exit;

   SizeNeeded  := 1024;

   SizeNeeded2 := 1024;

   if not LookupAccountSID(nil, OwnerSID, OwnerName,

     SizeNeeded, DomainName, SizeNeeded2, OwnerType) then

     Exit;

   Domain   := DomainName;

   Username := OwnerName;

 finally

   FreeMem(SecDescr);

   FreeMem(OwnerName);

   FreeMem(DomainName);

 end;

 GetFileOwner := True;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

 Domain, Username: string;

begin

 GetFileOwner('YourFile.xyz', domain, username);

 ShowMessage(username + '@' + domain);

end;

// Note: Only works unter NT.