Registro de Windows

13/05/2004 - 16:24 por Willser F. González C. | Informe spam
Hola Grupo,

tengo dos inquietudes acerca del acceso al registro de Windows:

En él tengo lo siguiente:

Llave: HKEY_LOCAL_MACHINE\SOFTWARE\Empresa\PMTEC
Sección: Serial
Valor: 45-55-57-48-56-53-53-55-48-54

Pero usando GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR
lpszDefault = NULL) de CWinApp, esta función siempre me busca en
HKEY_CURRENT_USER, y además siempre busca dentro de una llave que termina
con el nombre del proyecto, es decir que si tengo un proyecto llamado
Registro, entonces siempre busca en:
HKEY_CURRENT_USER\SOFTWARE\Empresa\Registro, igual si voy a crear una nueva
sección, si no existe la ruta anterior, ésta se crea automáticamente.

Entonces he intentado usar GetProfileString(), de la API, pero sin embargo
no he podido obtener el valor de la sección.

La llave es creada por un tercero, entonces no hay modo de intentar cambiar
de LOCAL_MACHINE a CURRENT_USER.

Les agradezco cualquier ayuda al respecto.

Preguntas similare

Leer las respuestas

#1 Cholo Lennon
13/05/2004 - 19:26 | Informe spam
Utiliza en su lugar la clase CRegKey (atlbase.h). Con la misma puedes
acceder a cualquier lugar del registro. Esta clase si bien es de ATL la
puedes usar sin problemas en un proyecto MFC.

#include <atlbase.h>
...

CRegKey regkey;

// Abre la clave especificada. Si no existe la crea
if (regkey.Create(
HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Empresa\\PMTEC\\Serial")) == ERROR_SUCCESS)
{
// Obtiene valor del número de serie
_TCHAR pszSerial[255];
regkey.QueryValue(pszSerial, _T("Valor"), 255);

// Trabaja con el serial obtenido
...

// En general no hace falta, el destructor cierra la misma
regkey.Close();
}


Saludos
Cholo Lennon
Salta, ARG
Respuesta Responder a este mensaje
#2 Fernando Marin
14/05/2004 - 00:35 | Informe spam
Hola Willser

Este es un ejemplo para modificar el registro del sistema (un poco burdo y
rapido)

espero que te ayude

HKEY hKey;
CString sKeyName=_T("___lo que quieras___");
unsigned char szFilePath[250]; // directory buffer

// Datos de ejemplo
DWORD nBufferLength=5; // longitud de szData
unsigned char szData[]={'h','o','l','a',NULL}; // Datos a meter en la clave

LONG lnRes = RegOpenKeyEx(
HKEY_LOCAL_MACHINE, // handle of open key
"SOFTWARE\\______\\_____", // address of name of subkey to open
0L,KEY_WRITE,
&hKey // address of handle of open key
);
if( ERROR_SUCCESS == lnRes )
{
lnRes = RegSetValueEx(hKey,
_T("_______"), // handle of the opened key to set value for
0,
REG_SZ,
szData, //value data
nBufferLength );
if( ERROR_SUCCESS == lnRes )
AfxMessageBox("No ha sido posible editar el registro.");
}


Nota: Pido disculpas a todos, ya que en mis otros dos mensajes tenia mal la
fecha del sistema y se han colocado mal






"Willser F. González C." escribió en el mensaje
news:
Hola Grupo,

tengo dos inquietudes acerca del acceso al registro de Windows:

En él tengo lo siguiente:

Llave: HKEY_LOCAL_MACHINE\SOFTWARE\Empresa\PMTEC
Sección: Serial
Valor: 45-55-57-48-56-53-53-55-48-54

Pero usando GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,


LPCTSTR
lpszDefault = NULL) de CWinApp, esta función siempre me busca en
HKEY_CURRENT_USER, y además siempre busca dentro de una llave que termina
con el nombre del proyecto, es decir que si tengo un proyecto llamado
Registro, entonces siempre busca en:
HKEY_CURRENT_USER\SOFTWARE\Empresa\Registro, igual si voy a crear una


nueva
sección, si no existe la ruta anterior, ésta se crea automáticamente.

Entonces he intentado usar GetProfileString(), de la API, pero sin embargo
no he podido obtener el valor de la sección.

La llave es creada por un tercero, entonces no hay modo de intentar


cambiar
de LOCAL_MACHINE a CURRENT_USER.

Les agradezco cualquier ayuda al respecto.


Respuesta Responder a este mensaje
#3 Willser F. González C.
14/05/2004 - 21:29 | Informe spam
Muchísimas gracias, con las dos formas en logrado superar este problema. Y
me dicidí por la clase CRegKey, de Cholo, ya que ésta es más corta y legible
en cuanto a codificación, aunque me imagino que dentro de ella se recurre a
las funciones de la repuesta de Fernando.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida