darth_ivan Postado Agosto 9, 2007 Denunciar Share Postado Agosto 9, 2007 Caros,vocês sabem como posso pegar que usuário está logado no windows, ou mesmo somente checar se ele é um adminstrador da máquina??Valeu... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 9, 2007 Denunciar Share Postado Agosto 9, 2007 (editado) 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 Agosto 10, 2007 por Micheus Adicionado o delimitador de código [code] [/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 10, 2007 Denunciar Share Postado Agosto 10, 2007 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 13, 2007 Denunciar Share Postado Setembro 13, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
darth_ivan
Caros,
vocês sabem como posso pegar que usuário está logado no windows, ou mesmo somente checar se ele é um adminstrador da máquina??
Valeu...
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.