Ir para conteúdo
Fórum Script Brasil
  • 0

Pegar Usuário Logado Do Windows


darth_ivan

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0
Guest --Jonas --

A função IsAdmin faz essa verificação.

function IsAdmin: Boolean;

var
  
   hAccessToken: THandle;
   ptgGroups: PTokenGroups;
   dwInfoBufferSize: DWORD;
   psidAdministrators: PSID;
   x: Integer;
   bSuccess: BOOL;

begin

   Result := False;
   bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
   hAccessToken);

   if not bSuccess then
     begin
       if GetLastError = ERROR_NO_TOKEN then
           bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
           hAccessToken);

     end; 

   if bSuccess then 
     begin
       GetMem(ptgGroups, 1024); 
       bSuccess := GetTokenInformation(hAccessToken, TokenGroups, 
       ptgGroups, 1024, dwInfoBufferSize);
       CloseHandle(hAccessToken);

       if bSuccess then 
          begin
             AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
             SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
             0, 0, 0, 0, 0, 0, psidAdministrators);
             {$R-} 
             for x := 0 to ptgGroups.GroupCount - 1 do
                 if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then 
                     begin
                        Result := True; 
                        Break;
                     end;

                 {$R+}

                 FreeSid(psidAdministrators); 
          end;
          FreeMem(ptgGroups); 
    end;
end; 



procedure TForm1.Button1Click(Sender: TObject);
begin
   if isAdmin then
     ShowMessage('Logado como Administrator');
end;

end;

Editado por Micheus
Adicionado o delimitador de código [code] [/code]
Link para o comentário
Compartilhar em outros sites

  • 0

mas se ainda precisar pegar o nome do usuário logado, segue um exemplo...

procedure TForm1.Button1Click(Sender: TObject);
var
  BufSize :cardinal;
  UserName :array[0..127] of ansichar;
begin
  BufSize := SizeOf(UserName);
  if BOOL(GetUserName(UserName, BufSize)) then
    ShowMessage(UserName);
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Foi observado por um colega que para o funcionamento da function IsAdmin é necessário declarar as constastes abaixo:

const
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  DOMAIN_ALIAS_RID_ADMINS = $00000220;

conforme ref. DelphiTricks.com

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...