Programación General > Visual C++
Problema Con El Registro
(1/1)
Geo:
Qué tal, tengo problemas para poder actualizar una clave del registro de Windows. Este es mi código:
--- Citar ---TCHAR buffer[ MAX_PATH ];
wsprintf( buffer, L"ControlPanel\\Desktop" );
HKEY hKey;
LONG open;
open = RegOpenKeyEx(
HKEY_CURRENT_USER, buffer,
0, KEY_WRITE, &hKey
);
if ( open != ERROR_SUCCESS ) {
showError();
//return false;
}
RegSetValueEx( hKey, L"WallpaperStyle", 0, REG_SZ, (LPBYTE)"0", lstrlen( L"0" ) + 1 );
RegSetValueEx( hKey, L"TileWallpaper", 0, REG_SZ, (LPBYTE)"0", lstrlen( L"0" ) + 1 );
--- Fin de la cita ---
Pero no logro que las claves se actualicen, siempre conservan su valor. El único detalle que he encontrado es que en la variable open me aparece un valor de error que con la función showError() me muestra Error 183: No se puede crear un archivo que ya existe.. Lo que no entiendo es porqué indica eso si se supone que la función RegOpenKeyEx no crea la clave sino simplemente la abre:
--- Citar ---Remarks
Unlike the RegCreateKeyEx function, the RegOpenKeyEx function does not create the specified key if the key does not exist in the registry.
--- Fin de la cita ---
La función showError:
--- Código: Text --- void showError() { TCHAR szBuf[80]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); wsprintf( szBuf, L"Error %d: %s", dw, lpMsgBuf ); MessageBox(NULL, szBuf, L"Error", MB_OK); } Gracias de antemano :).
Eternal Idol:
Jeje, Control Panel, con espacio :P
Geo:
--- Cita de: "Eternal Idol" ---Jeje, Control Panel, con espacio :P
--- Fin de la cita ---
¡Aaaargh! :brickwall: :argh:
:gracias:
JJ (Geo).
Navegación
Ir a la versión completa