Fórum Pegar usuário logado do windows #1264
09/12/2008
0
Cia Papel
Curtir tópico
+ 0Posts
09/12/2008
Wesley Yamazack
Gostei + 0
10/12/2008
Cia Papel
Gostei + 0
10/12/2008
Guinther Pauli
Eu tenho uma função que sempre utilizei em meus projetos, experimente para ver se supre a sua necessidade:
{ Declare Windows no uses }
function NomeUsuario: string;
const
Max = 254;
var
Nome: string;
Tam: DWORD;
begin
Tam := Max - 1;
SetLength(Nome,Max);
GetUserName(PChar(Nome),Tam);
SetLength(Nome,Tam);
result := Nome;
end;
Att,
Guinther
Gostei + 0
10/12/2008
Cia Papel
Gostei + 0
12/12/2008
Cia Papel
Gostei + 0
13/12/2008
Rodrigo Mourão
Gostei + 0
13/12/2008
Cia Papel
Gostei + 0
15/12/2008
Rodrigo Mourão
Gostei + 0
23/12/2008
Rodrigo Mourão
Gostei + 0
23/12/2008
Ricardo Boaro
Vamos lá, realmente seu "problema" é complexo, mas estamos aqui para isso mesmo, se fosse barbada vc mesmo resolveria. Entendo que a única forma de revolvermos é coletarmos algumas funções que fazem esse controle de login e testá-las, abaixo estou colocando algumas que conheço.
Function LogUser : String;
{Requer a unit Registry declarada na clausula Uses da Unit}
var
Registro:TRegistry;
begin
Registro := TRegistry.Create;
Registro.RootKey := HKEY_LOCAL_MACHINE;
if Registro.OpenKey(Network\Logon, false) then
begin
result := Registro.ReadString(username);
end;
Registro.Free;
end;
Essa é uma delas, segundo meus testes aqui funciona no Windows XP.
Function usuario: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetUserName(buffer, size) then
Result := buffer
else
Result :=
end;
Outra, essa funcionou no Windows Vista, mas temos que testar em sua aplicação tendo modificado o nivel de permissão do usuário.
Function TfrmMensagem.funGetNomeUser: String;
// Adicionar ao User a Classe Registry
var
vobjRegistro : TRegistry;
begin
vobjRegistro := TRegistry.Create;
try
case Win32Platform of
VER_PLATFORM_WIN32_WINDOWS: begin // Windows 9x
vobjRegistro.RootKey := HKEY_LOCAL_MACHINE;
if vobjRegistro.OpenKey(\Network\Logon, True) then
Result := vobjRegistro.ReadString(username);
end;
VER_PLATFORM_WIN32_NT: begin // Windows XP
vobjRegistro.RootKey := HKEY_CURRENT_USER;
if vobjRegistro.OpenKey(\Software\Microsoft\Windows\CurrentVersion\Explorer, True) then
Result := vobjRegistro.ReadString(Logon User Name);
end;
end;
finally
vobjRegistro.Free;
end;
end;
Essa eu testei no XP e retornou certinho, mas vamos ver se funciona para você.
Espero que uma das 3 resolva seu problema, enquanto você testa em sua aplicação eu vou fazer outros testes por aqui.
Abraço e Boas Festas!!
Gostei + 0
26/12/2008
Ricardo Boaro
Gostei + 0
29/12/2008
Cia Papel
Gostei + 0
05/01/2009
Ricardo Boaro
Resolvido seu problema ? Conseguiu testar?
Podemos encerrar esse chamado ou precisa de algo mais ?
abs
Gostei + 0
05/01/2009
Cia Papel
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)