Regedit - Pegar usuário logado
Estou enfrentando o seguinte problema:
Fiz um programa (em Delphi 7 / WinXP) para pegar o nome do usuário
logado no sistema operacional e ele só funciona qdo roda no WinXP. Em
outros sistemas ele não pega.
segue a chave onde estou pegando a informação no regedit
[list:8fc972b067]
[color=green:8fc972b067]Win95, Win98:[/color:8fc972b067]
HKEY_LOCAL_MACHINE\Network\Logon, ´username´
[color=green:8fc972b067]WinNT4:[/color:8fc972b067]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, ´DefaultUserName´
[color=green:8fc972b067]Win2k:[/color:8fc972b067]
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer, ´Logon User Name´
[/list:u:8fc972b067]
Alguém já passou por esse problema e conseguiu resolver?
Toda ajuda é bem-vinda
Fiz um programa (em Delphi 7 / WinXP) para pegar o nome do usuário
logado no sistema operacional e ele só funciona qdo roda no WinXP. Em
outros sistemas ele não pega.
segue a chave onde estou pegando a informação no regedit
[list:8fc972b067]
[color=green:8fc972b067]Win95, Win98:[/color:8fc972b067]
HKEY_LOCAL_MACHINE\Network\Logon, ´username´
[color=green:8fc972b067]WinNT4:[/color:8fc972b067]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, ´DefaultUserName´
[color=green:8fc972b067]Win2k:[/color:8fc972b067]
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer, ´Logon User Name´
[/list:u:8fc972b067]
Alguém já passou por esse problema e conseguiu resolver?
Toda ajuda é bem-vinda
Angelnoa
Curtidas 0
Respostas
Massuda
10/05/2006
A princípio, isto deveria funcionar sem problemas...
function PegarNomeDoUsuario: string; const TamanhoMaximo = 256; var S: string; Tamanho: dword; begin Tamanho := TamanhoMaximo; SetLength(S, Tamanho); if GetUserName(PChar(S), Tamanho) then begin SetLength(S, Tamanho); Result := S; end; else Result := ´´ end;
GOSTEI 0
Adriano Santos
10/05/2006
A princípio, isto deveria funcionar sem problemas...
function PegarNomeDoUsuario: string; const TamanhoMaximo = 256; var S: string; Tamanho: dword; begin Tamanho := TamanhoMaximo; SetLength(S, Tamanho); if GetUserName(PChar(S), Tamanho) then begin SetLength(S, Tamanho); Result := S; end; else Result := ´´ end;
Eu uso este algoritimo do Massuda e funciona perfeitamente.
GOSTEI 0
Angelnoa
10/05/2006
Valeu pela força! Só tem um problema... é que esta função está acrescentando #0 ao final.
a varíavel fica assim: usuario=´angela´0
Como resolvo isso?
var usuario: String; begin usuario := PegarNomeDoUsuario; . . . end;
a varíavel fica assim: usuario=´angela´0
Como resolvo isso?
GOSTEI 0
Adriano Santos
10/05/2006
Valeu pela força! Só tem um problema... é que esta função está acrescentando #0 ao final.
a varíavel fica assim: usuario=´angela´0
Como resolvo isso?
var usuario: String; begin usuario := PegarNomeDoUsuario; . . . end;
Tenta converter para String assim:
String(usuario);
GOSTEI 0
Angelnoa
10/05/2006
Poxa Adriano, não deu certo :cry:
Já tentei com StringReplace, mas tbm não foi.
Já tentei com StringReplace, mas tbm não foi.
GOSTEI 0
Massuda
10/05/2006
...esta função está acrescentando #0 ao final.
Esqueci da convenção do Windows de usar 0 no final das strings... mude o código assim...... if GetUserName(PChar(S), Tamanho) then begin SetLength(S, Tamanho - 1); // descarta o 0 do final Result := S; end ...
GOSTEI 0
Angelnoa
10/05/2006
Agora foi!
Muito obrigada!!!!!!!!!! :D
Muito obrigada!!!!!!!!!! :D
GOSTEI 0