2010-07-28 11 views
5

¿Qué datos y dónde debo agregar al registro de Windows para crear correctamente una asociación de archivos?¿Cómo agregar asociaciones de archivos correctamente al Registro de Windows?

Formulo esta pregunta principalmente debido a algunas aplicaciones antiguas que escribí hace años, que usaba el paquete de Windows Installer de Visual Studio .NET para crear las asociaciones de archivos. Las extensiones que instalé fueron .whr y .encxml.

Ahora, en el equipo en el que se instalan estas aplicaciones, un extraño problema se produce veces - cuando se descarga un archivo, ya sea en Google Chrome o Internet Explorer (especialmente un exe, msi o archivo zip), el navegador cambiar la extensión del archivo a una de las extensiones que instaló mi instalador. No sé si afecta a otros navegadores: ¿esos dos tienen algo en común? Entonces ... si descarga, por ejemplo, http://example.com/downloads/application.exe, el archivo se descargará como http://example.com.downloads/application.encxml (o .whr, cualquiera que elija por el momento) sin ningún motivo aparente.

Debo notar que las claves que hacen referencia a las claves HKCR\.whr y HCKR\.encxml (Archivo XML cifrado de Account Manager y Registro de horas de trabajo) tienen espacios, y cuando creé la asociación en Visual Studio, NO agregué un ". " al frente. ¿Quizás los espacios no están permitidos, y/o se supone que prefijas con "."? El código de registro parece correcto, pero me di cuenta mirando en mi registro que cada otra aplicación NO usa un espacio en la clase de asociación, ni este problema ocurre con CUALQUIER otra extensión de archivo desde cualquier aplicación instalada en cualquier máquina que conozco, solo los creados por los instaladores VS de mis aplicaciones. He pegado un volcado de registro de las claves de registro correspondientes y los valores relacionados con las extensiones de archivo, ya que MSI es propietario. No tengo idea si esto es todo, pero por lo que sé de otras aplicaciones, esto debería ser todo. Siempre me he preguntado sobre este tema durante años, pero nunca pude resolverlo. Estoy reemplazando pronto una de esas aplicaciones antiguas por un producto más nuevo, así que esta vez quiero asegurarme de que no haya errores extraños como este ...

Aquí están los datos (tenga en cuenta que he indicado los valores de texto de algunas cadenas binarias con un comentario // debajo del valor):

[HKEY_CLASSES_ROOT\.encxml] 
"Content Type"="application/octet-stream" 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File] 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File\ShellNew] 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File] 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,42,00,36,00,34,00,31,00,37,00,36,\ 
    00,30,00,42,00,2d,00,37,00,44,00,42,00,37,00,2d,00,34,00,46,00,31,00,42,00,\ 
    2d,00,41,00,44,00,36,00,45,00,2d,00,30,00,41,00,33,00,34,00,32,00,30,00,46,\ 
    00,35,00,45,00,45,00,30,00,44,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID is: {F7F214E9-ED37-4AE1-B0D2-93427973E60A}, which is different from below but I probably changed it at some point for some reason 
// %APPDATA%\Microsoft\Installer\{B641760B-7DB7-4F1B-AD6E-0A3420F5EE0D}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell] 
@="open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Account Manager\\AccountManager.exe\" \"%1\"" 
"command"=hex(7):4c,00,29,00,25,00,59,00,63,00,73,00,67,00,2d,00,4c,00,41,00,\ 
    28,00,30,00,64,00,66,00,34,00,36,00,75,00,5f,00,50,00,27,00,3e,00,27,00,7d,\ 
    00,27,00,66,00,25,00,6f,00,59,00,64,00,4b,00,69,00,48,00,74,00,7a,00,35,00,\ 
    21,00,55,00,2b,00,6c,00,68,00,54,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// This is a bizarre-looking value... what's up with that? 
// L)%Ycsg-LA(0df46u_P'>'}'f%oYdKiHtz5!U+lhT "%1" 

[HKEY_CLASSES_ROOT\.whr] 
"Content Type"="application/octet-stream" 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record] 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record\ShellNew] 

[HKEY_CLASSES_ROOT\Work Hours Record] 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\Work Hours Record\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,46,00,41,00,32,00,33,00,44,00,37,\ 
    00,36,00,34,00,2d,00,46,00,36,00,34,00,39,00,2d,00,34,00,38,00,46,00,39,00,\ 
    2d,00,38,00,44,00,30,00,42,00,2d,00,45,00,31,00,38,00,38,00,35,00,41,00,39,\ 
    00,38,00,31,00,46,00,39,00,39,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID: {FA23D764-F649-48F9-8D0B-E1885A981F99}, same as below 
// %APPDATA%\Microsoft\Installer\{FA23D764-F649-48F9-8D0B-E1885A981F99}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Work Hours Record\shell] 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Work Hours Calculator\\WorkHoursCalculator.exe\" \"%1\"" 
"command"=hex(7):28,00,5d,00,56,00,49,00,79,00,55,00,7b,00,5e,00,4e,00,3f,00,\ 
    26,00,68,00,48,00,7e,00,53,00,24,00,6e,00,31,00,36,00,59,00,3e,00,33,00,75,\ 
    00,5f,00,7d,00,47,00,26,00,70,00,79,00,75,00,78,00,38,00,4e,00,72,00,43,00,\ 
    6e,00,67,00,27,00,44,00,67,00,42,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// Same bizarre-looking type of value as before, but different... 
// (]VIyU{^N?&hH~S$n16Y>3u_}G&pyux8NrCng'DgB "%1" 
+0

Ver http://stackoverflow.com/questions/69761/how-to -associate-a-file-extension-to-the-current-executable-in-c para algunos proyectos de código que lo han hecho con éxito. Incluso si no codifica en C#, aún puede leer el código para descubrir cómo lo hacen. –

+0

Lo siento Robert, pero eso es incorrecto. Windows Installer es un modelo de programación declarativa no imperativo. Observar un ejemplo de C# y emularlo se consideraría un antipatrón fácil de usar y fuera de proceso en el mundo de MSI. –

Respuesta

Cuestiones relacionadas