Identificar usuário na rede

Delphi

30/09/2003

Oi pessoal,

gostaria de saber como fazer para conseguir o nome do usuário de uma máquina na rede, através do nome da máquina. Teria como fazer isto através do delphi???

Agradeço antecipadamente.


Wsantos

Wsantos

Curtidas 0

Respostas

Marconi

Marconi

30/09/2003

Veja a função abaixo

No seu programa digite

Usuario:=LogUser;
ShowMessage(usuario);


function LogUser : String;
{Requer a unit Registry declarada na clausula Uses da Unit}
var
Registro : TRegistry; r:string;
begin
Registro := TRegistry.Create;
// Registro.RootKey := HKEY_LOCAL_MACHINE;
Registro.RootKey := HKEY_CURRENT_USER;
//if Registro.OpenKey(´Network\Logon´, false) then begin
if Registro.OpenKey(´Network\Recent\././CINECATH_SRV./SYS´, false) then begin
r := Registro.ReadString(´username´);
r := copy(r,5,length(r)-5);
result := Copy(r,1,AnsiPos(´.´,r)-1);
end;
if (result=emptystr) or (result=null) then begin
if Registro.OpenKey(´Volatile Environment´,false)
then result := Registro.ReadString(´NWUSERNAME´);
end;
if (result=emptystr) or (result=null) then begin
if Registro.OpenKey(´Volatile Environment´,false) then begin
r := Registro.ReadString(´LOGONSERVER´);
result := Copy(r,3,length(r)-2);
end;
end;
Registro.Free;
end;


Marconi


GOSTEI 0
Wsantos

Wsantos

30/09/2003

Tentei usar o código acima, mas não funcionou.
Saberiam outra maneira de fazer isso???


GOSTEI 0
Marconi

Marconi

30/09/2003

Troque as linhas

// Registro.RootKey := HKEY_LOCAL_MACHINE;
Registro.RootKey := HKEY_CURRENT_USER;
//if Registro.OpenKey(´Network\Logon´, false) then begin
if Registro.OpenKey(´Network\Recent\././CINECATH_SRV./SYS´, false) then begin

por

Registro.RootKey := HKEY_LOCAL_MACHINE;
if Registro.OpenKey(´Network\Logon´, false) then begin

É que no código anterior eu me referia a um servidor de rede.

Agora vai funcionar.

Marconi


GOSTEI 0
POSTAR