Hola, ya lo e compilao y me funciona, para lo del programa e echo esto modificando el codigo que me diste para lo de la extension:
char *direccion = "D:\\0 PROGRAMAS\\vlc-0.7.2\\vlc.exe";
char *abrir = "Programa_adios\\shell\\open\\command";
tam = lstrlen(direccion);
ret_key = RegCreateKeyEx(HKEY_CLASSES_ROOT, abrir, 0, "",
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
NULL, &key, &Disposition);
if (ret_key == ERROR_SUCCESS) {
ret_key = RegSetValueEx(key, "", 0, REG_SZ, (LPBYTE)direccion, tam);
if (ret_key != ERROR_SUCCESS) {
/* error !!! no se ha podido asignar el valor PROGRAMA*/
}
RegCloseKey(key);
} else {
/* error !!! no se ha podido crear la entrada en el registro PROGRAMA*/
}
Tube algun problema con las direcciones con \ me daba unos warnings (supongo que porque pensba que lo que iba detras era un caracter especial (Ej: \n) y no lo encontraba), probe poniendo %5D el codigo ascii y tampoco me iba, al final mire un ejemplo de codigo en msdn y vi que los ponia dobles, la cosa es que funciona, no tengo claro el porque de esto pero va.
Ahora que ya tengo esto funcionando mi segundo paso e decidido que sea guardar lo habia antes de lo que pongo, no se si me explico, para asi despues poderlo dejar como estaba.
Mi idea es leer donde escribo antes de escribir y si no me da error la lectura (entonces sera que hay algo) guardarlo en un archivo de texto.
Es buena idea o me recomiendan algo diferente?
Saludos