Registro en C

Iniciado por winnipu, 9 Enero 2014, 15:57 PM

0 Miembros y 1 Visitante están viendo este tema.

winnipu

Alguien sabe porque este codigo no crea una entrada en el registro corriendo un S.O. win7?

int test_key(void)
{
   int check;
   HKEY hKey;
   char path[BUFSIZE];
   DWORD buf_length=BUFSIZE;
   int reg_key;

   reg_key=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&hKey);
   if(reg_key!=0)
   {
       check=1;
       return check;
   }

   reg_key=RegQueryValueEx(hKey,"svchosts",NULL,NULL,(LPBYTE)path,&buf_length);

   if((reg_key!=0)||(buf_length>BUFSIZE))
       check=2;
   if(reg_key==0)
       check=0;

   RegCloseKey(hKey);
   return check;
}

int create_key(char *path)
{
       int reg_key,check;

       HKEY hkey;

       reg_key=RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey);
       if(reg_key==0)
       {
               RegSetValueEx((HKEY)hkey,"svchosts",0,REG_SZ,(BYTE *)path,strlen(path));
               check=0;
               return check;
       }
       if(reg_key!=0)
               check=1;

       return check;
}

winnipu

Segun he leido lo unica idea que me surje es que como regCreateKey es una funcion descatalogada deba usar regCreateKeyEx, y lo he hecho, he modificado el source pasandole los parametros y ni por esas he logrado incluir la entrada de registro. He ejecutado el .exe como administrador y tampoco ha creado la entrada en el registro. No se que hago mal.