Dicas - Como obter o domínio e o dono do arquivo

Veja nesta dica, como obter o domínio e o owner (dono) de um arquivo.

Como obter o domínio e o dono do arquivo

 

Adicione em um formulário, três Edits (“edtFileName”, “edtDomain” e “edtOwner”), um OpenDialog e um Button. Implemente a função GetFileOwner conforme o código a seguir:

 

function GetFileOwner(FileName: string; var Domain, Username: string): Boolean;

var

  SecDescr: PSecurityDescriptor;

  SizeNeeded, SizeNeeded2: DWORD;

  OwnerSID: PSID;

  OwnerDefault: BOOL;

  OwnerName, Group: PChar;

  OwnerType: SID_NAME_USE;

begin

  { alocar e inicializar }

  GetMem(SecDescr, 255);

  GetMem(OwnerSID, SizeOf(PSID));

  GetMem(OwnerName, 255);

  GetMem(Group, 255);

  try

{ Temos permissao para obter informacoes? }

Result := GetFileSecurity( PChar(FileName),

OWNER_SECURITY_INFORMATION, SecDescr, 255, SizeNeeded );

if Result then

begin

{ Obtendo o dono e o descritor de segurança }

Result := GetSecurityDescriptorOwner(SecDescr, OwnerSID, OwnerDefault);

if Result then

begin

SizeNeeded  := 255;

SizeNeeded2 := 255;

{ Obtendo as informacoes de usuario e dominio via o SID.

O primeiro parametro eh lpSystemName, o qual pode ser um sistema local ou remoto.}

Result := LookupAccountSID(nil, OwnerSID, OwnerName, SizeNeeded,

 Group, SizeNeeded2, OwnerType );

if Result then

begin

Domain := Group;

Username := OwnerName;

end;

end;

end;

 

if not Result then

RaiseLastOSError;

  finally

FreeMem(Group);

    FreeMem(OwnerName);

OwnerSID := nil;

FreeMem(SecDescr);

  end;

end;

 

No evento OnClick do botão, adicione o seguinte código:

 

procedure TForm1.btOpenClick(Sender: TObject);

var

  Domain, Username: string;

begin

  if not OpenDialog1.Execute then

Exit;

  if GetFileOwner(OpenDialog1.FileName, Domain, Username) then

  begin

edtFileName.Text := OpenDialog1.FileName;

edtDomain.Text := Domain;

edtOwner.Text := Username;

  end

  else

  begin

ShowMessage(Format('Impossível obter as informações do arquivo para: %s ',

[OpenDialog1.FileName]));

  end;

end;

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados