Ok, en ese caso me es más fácil darte la solución a tú problema, que explicar toda la clase
- Código: Seleccionar todo
//Declaración
long RegApp(LPTSTR);
- Código: Seleccionar todo
long RegApp(LPTSTR lpRt)
{
//Tu valor
LPCTSTR lpcVal = "MyValue";
// Sub key
LPCTSTR lpcSof = "Software\\Miaply";
const DWORD dwcSize = 256;
char lpPath[dwcSize] ={0};
HKEY hk;
long lng = 0;
//Abrimos.
lng = RegOpenKey(HKEY_CURRENT_USER,lpcSof,&hk);
//Aqui notamos si existe o no existe.
// Si no existe, escribimos.
// Si existe, leemos.
if(lng > 0)
{
RegCreateKey(HKEY_CURRENT_USER,lpcSof,&hk);
//Obtiene la dirección del programa.
GetCurrentDirectory(dwcSize,lpPath);
RegSetValueEx(hk,lpcVal,NULL,REG_SZ,(const BYTE*)lpPath,dwcSize);
RegCloseKey(hk);
return 0L;
}else{
DWORD dwSize = dwcSize;
DWORD dwType = REG_SZ;
RegQueryValueEx(hk,lpcVal,0,&dwType,(BYTE*)lpPath,&dwSize);
RegCloseKey(hk);
strcpy(lpRt,lpPath);
return (long)dwSize;
}
return 0L;
}
Ejemplo de uso:
- Código: Seleccionar todo
char lpRet[256];
long lng;
l = RegApp(lpRet);
No sabría decirte como implementarla dentro de un proyecto del tipo MFC ya que no desarrollo en base a esa API, tal vez alguien con más en experiencia en la MFC pueda ayudarte. El ejemplo de uso que escribí fue utilizando un proyecto tipo Win32.
Aclaro que lo desarrollé en Window Me. No se que pasará en XP.
Tengo entendido que MAX_PATH es de 256, por lo tanto he declarado a
dwcSize con un valor de 256. Si quieres puedes aumentar este valor para direcciónes más largas, pero no lo he probado en ese aspecto.En tal caso,
lpRet deberá ir a la par con el valor de
dwcSize.
Saludos.
