Hola a todos, hace algún tiempo los compañeros del foro me ayudaron a encontrar el código que me era necesario para asociar una extensión a mi ejecutable y funcionó perfectamente salvo que solamente las llaves que crea son accesibles para sesión de trabajo que las crea, es decir, cuando ejecuto el programa en otra sesión de Windows los archivos no aparecen con el icono del programa ni se abre este al hacerle doble clic. Para lograr que funcione tengo que ir a registro y manualmente dar permiso de lectura a “Todos” en cada una de las llaves.
Entonces la pregunta es: ¿Cómo dar permiso en una llave a los distintos usuarios a través del código?
El código que empleo:
Código Delphi
[-]
procedure RegistraExtension( Extension,
TipoFichero,
Descripcion,
Exe:string;
IndiceIcono: integer);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey(Extension, True);
WriteString('', TipoFichero);
CloseKey;
OpenKey(TipoFichero, True);
WriteString('', Descripcion);
CloseKey;
OpenKey(TipoFichero + '\DefaultIcon', True); WriteString('', exe + ',' + IntToStr(IndiceIcono));
CloseKey;
OpenKey(TipoFichero + '\Shell\Open', True);
WriteString('', '&Open');
CloseKey;
OpenKey(TipoFichero + '\Shell\Open\Command', True);
WriteString('', '"' + Exe + '" "%1"');
CloseKey;
end;
SHChangeNotify( SHCNE_ASSOCCHANGED,
SHCNF_IDLIST,
nil, nil);
finally
Reg.Free;
end;
end;