Delphi - база знаний


Как прочитать владельца файла?


Как прочитать владельца файла?





// 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.
Взято с сайта



Начало  Назад  Вперед