Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2013
KroSaver KroSaver is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 20
Poder: 0
KroSaver Va por buen camino
Question Registro de windows

Buenas noches a todos.

Tengo un problemilla raro con el registro de windows, intento sacar el nombre de usuario atravez del registro de win usando apis en delphi, el codigo funciona pero si el nombre de usuario es KroSaver me debuelve Microsoft pero claramente veo en el registro que es KroSaver , este es el code:

Código Delphi [-]
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
0, KEY_SET_VALUE, ClaveReg)= ERROR_SUCCESS) then
  begin
    RegQueryValueEx(ClaveReg, 'RegisteredOwner', nil, nil, @UserName, @SizeUser);
    RegCloseKey(ClaveReg);
  end;

Gracias de antemano y saludos

Última edición por Casimiro Notevi fecha: 24-02-2013 a las 11:32:29.
Responder Con Cita
  #2  
Antiguo 24-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
KroSaver,

Cita:
Empezado por KroSaver
...intento sacar el nombre de usuario atravez del registro de win usando apis en delphi...
Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   Reg: TRegistry;

begin

   Reg := TRegistry.Create;

   try

      Reg.RootKey := HKEY_LOCAL_MACHINE;

      if Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion') then
      begin
         ShowMessage(Reg.ReadString('RegisteredOwner'));
         Reg.CloseKey;
      end;

   finally

      Reg.Free;

   end;

end;
El código anterior lee un valor particular del Registro de Windows por medio de la clase TRegistry.

Cita:
Empezado por Delphi Help
TRegistry is a low-level wrapper for the system registry and functions that operate on the registry.
Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 24-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por KroSaver Ver Mensaje
...intento sacar el nombre de usuario atravez del registro de win usando apis en delphi...
Hola KroSaver.

Código Delphi [-]
...
{$WARNINGS OFF}

function ReadRegistryValue(const aKEY: HKEY; const lpSubkey, lpValueName: PChar): string;
var
  lpType   : DWORD;
  lpcbData : DWORD;
  lpData   : PChar;
  phkResult: HKEY;
begin
  if RegOpenKeyEx(aKEY, lpSubkey, 0, KEY_READ, phkResult) = ERROR_SUCCESS then
  begin
    SetLastError(RegQueryValueEx(phkResult, lpValueName, nil, @lpType, nil, @lpcbData));
    if GetLastError = ERROR_SUCCESS then
    begin
      GetMem(lpData, lpcbData);
      try
        RegQueryValueEx(phkResult, lpValueName, nil, nil, PBYTE(lpData), @lpcbData);
        Result := StrPas(lpData)
      finally
        FreeMem(lpData)
      end
    end
    else
      raise Exception.Create('No se pudo obtener el valor de ' + StrPas(lpValueName));
    RegCloseKey(phkResult);
  end;
end;

Llamada de ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  SubKey, ValueName: string;
begin
  SubKey    := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion';
  ValueName := 'RegisteredOwner';
  ShowMessage('Propietario registrado: '+
    ReadRegistryValue(HKEY_LOCAL_MACHINE, PChar(SubKey), PChar(ValueName)));
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 24-02-2013
KroSaver KroSaver is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 20
Poder: 0
KroSaver Va por buen camino
Gracias a los 2!

ecfisa buen code pero me sigue dando microsoft en vez del usuario que tengo!

saludos
Responder Con Cita
  #5  
Antiguo 24-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por KroSaver Ver Mensaje
Gracias a los 2!

ecfisa buen code pero me sigue dando microsoft en vez del usuario que tengo!

saludos
Hola KroSaver.

Que cosa mas extraña...

Probé la función también en Windows XP y Vista y obtengo el nombre del propietario de forma correcta (verificado con regedit).

¿ Seguro que ValueName contiene el valor que esperas ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-02-2013
KroSaver KroSaver is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 20
Poder: 0
KroSaver Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola KroSaver.

Que cosa mas extraña...

Probé la función también en Windows XP y Vista y obtengo el nombre del propietario de forma correcta (verificado con regedit).

¿ Seguro que ValueName contiene el valor que esperas ?

Saludos.
Si bueno estuvimos provando con un amigo e hicimos codes en c y en delphi y esta pasando algo muy raro, si yo compilo el codigo de c en mi equipo siempre me debuelve microsoft pero si el me pasa el exe compilado me debuelve bien el nombre de usuario , el en su equipo no puede conseguir el ProductName que es el sistema operativo que se esta usando pero yo si.

Es muy raro nunca tuve este problema!

saludos
Responder Con Cita
  #7  
Antiguo 24-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola KroSaver.

Me olvidé de comentarte que las pruebas que hice hace un rato sobre XP, Vista y W7 son S.O. de 32 bits. No tengo forma en este momento de comprobar que trabaje bién en S.O. de 64 bits.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 24-02-2013
KroSaver KroSaver is offline
Miembro
NULL
 
Registrado: feb 2013
Posts: 20
Poder: 0
KroSaver Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola KroSaver.

Me olvidé de comentarte que las pruebas que hice hace un rato sobre XP, Vista y W7 son S.O. de 32 bits. No tengo forma en este momento de comprobar que trabaje bién en S.O. de 64 bits.

Saludos.
El sistema que uso es 64Bits Windows 7 y Windows 8 y el xp es 32 bits.

saludos
Responder Con Cita
  #9  
Antiguo 24-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
KroSaver,

Cita:
Empezado por KroSaver
...me sigue dando microsoft en vez del usuario que tengo...El sistema que uso es 64Bits Windows 7 y Windows 8 y el xp es 32 bits
Cita:
Empezado por KroSaver
...si yo compilo el codigo de c en mi equipo siempre me debuelve microsoft pero si el me pasa el exe compilado me debuelve bien el nombre de usuario...
Probé el código del Msg #2 y Msg #3 en las siguientes configuraciones: Windows 7 Professional x32 y Windows Vista Home Premiun x32 (Máquinas Físicas), Windows 7 Professional x32, Windows 7 Professional x64 y Windows XP Professional x32 (Máquinas Virtuales) y en todos los casos funcionaron ambos códigos correctamente.

Pregunto:

1- ¿Probastes el código del Msg #2?

2- ¿Si cambias el valor de RegisteredOwner en tu máquina como se comportan los códigos del Msg #2 y Msg #3?

3- ¿El ejecutable en Delphi y C generado en tu máquina como se comporta en la otra máquina?

Espero sea útil

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Registro de Windows Khronos Varios 2 07-12-2008 23:23:28
registro de windows JULIPO Varios 4 26-07-2007 08:17:01
Uso de registro de Windows Alcolea Windows 3 05-06-2006 21:47:35
registro de Windows ebeltete API de Windows 1 17-06-2003 17:00:14
Registro de Windows Periyo Varios 3 08-05-2003 17:51:51


La franja horaria es GMT +2. Ahora son las 12:50:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi