Fórum Regedit - Pegar usuário logado #321064

10/05/2006

0

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


Angelnoa

Angelnoa

Responder

Posts

10/05/2006

Massuda

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;



Responder

Gostei + 0

10/05/2006

Adriano Santos

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.


Responder

Gostei + 0

11/05/2006

Angelnoa

Valeu pela força! Só tem um problema... é que esta função está acrescentando #0 ao final.

var usuario: String;
begin
  usuario := PegarNomeDoUsuario;
  .
  .
  .
end;


a varíavel fica assim: usuario=´angela´0
Como resolvo isso?


Responder

Gostei + 0

11/05/2006

Adriano Santos

Valeu pela força! Só tem um problema... é que esta função está acrescentando #0 ao final.
var usuario: String;
begin
  usuario := PegarNomeDoUsuario;
  .
  .
  .
end;
a varíavel fica assim: usuario=´angela´0 Como resolvo isso?


Tenta converter para String assim:
  String(usuario);



Responder

Gostei + 0

11/05/2006

Angelnoa

Poxa Adriano, não deu certo :cry:
Já tentei com StringReplace, mas tbm não foi.


Responder

Gostei + 0

11/05/2006

Massuda

...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
...



Responder

Gostei + 0

11/05/2006

Angelnoa

Agora foi!

Muito obrigada!!!!!!!!!! :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar