Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=26)
-   -   Permisos en el registro de Windows (https://www.clubdelphi.com/foros/showthread.php?t=39165)

Alcolea 12-01-2007 03:39:27

Permisos en el registro de Windows
 
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 [-]
    
{Procedimiento para crear las claves del registro necesarias para asociar
    los archivo con extencion .exm al programa}

   procedure RegistraExtension( Extension,
                                TipoFichero,
                                Descripcion,
                                Exe:string;
                                IndiceIcono: integer);
   {Uses: Registry, ShlObj}
   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;


La franja horaria es GMT +2. Ahora son las 00:05:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi