Ver Mensaje Individual
  #1  
Antiguo 12-01-2007
Avatar de Alcolea
Alcolea Alcolea is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santiago de Cuba, Cuba
Posts: 100
Reputación: 19
Alcolea Va por buen camino
Question 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;
Responder Con Cita