2010-06-02 11 views
7

Estoy implementando una pequeña herramienta de conversión en algunos sistemas, y quiero que los usuarios puedan ejecutarla desde el menú Open with del botón derecho. Pero no quiero cambiar el programa predeterminado que los usuarios han asociado a este tipo de archivo.Cómo asociar una extensión de archivo a un programa sin hacerlo el programa predeterminado

Es fácil asociar una extensión/tipo de archivo a un programa, pero cómo hacerlo (programaticamente por supuesto) sin cambiar el programa predeterminado?

Respuesta

4

Configuración de las teclas siguientes trabajó para mí:

key HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/<progname>: "" = <appPath> 

key HKCR/Applications/<progname>/SupportedTypes: <fileExt> = "" 
key HKCR/<fileExt>: "" = <progID> 

key HKCR/<progID>/OpenWithList/<progName> 
key HKCR/<fileExt>/OpenWithList/<progName> 
key HKCR/SystemFileAssociations/<fileExt>/OpenWithList/<progName> 

delete key and subkey at HKCU/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/fileExts/<fileExt> 
1

Puede agregar secuencias de comandos para el menú de contexto (por debajo de Abrir con) añadiéndolo en el registro de Windows:

  1. regedit abierto
  2. Goto HKEY_CLASSES_ROOT\your_class\Shell
  3. Añadir una nueva clave y darle un nombre
  4. Editar el valor de esta clave (Default) e insertar el texto que desea que aparezca en el menú contextual
  5. Añadir una nueva clave llamada Command debajo de la recién creada clave
  6. Edite el valor (Default) de esta clave e inserte el comando que desea ejecutar
  7. ¡Disfrútelo!
+0

Eso también es lo que he intentado antes, pero en mi caso no es suficiente; la asociación predeterminada se hizo a mano en Explorer, y por alguna razón bloquea este manejo de archivos. – CharlesB

0

En el cuadro de diálogo de Windows "Tipos de archivo" puede hacer clic en "Avanzado" en su tipo de archivo y crear una acción personalizada vinculada a su aplicación.

Posiblemente también se puede encontrar una manera de hacerlo de forma programática, o al menos crear un archivo .REG con las opciones de registro equivalentes.

+0

Sí, quiero hacerlo programáticamente – CharlesB

+0

Puede usar las funciones de registro de Win32 - http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx - para crear/cambiar las entradas de registro relevantes – ob1

-2

he aquí un ejemplo trabajado para XP agregando una opción de símbolo del sistema a las carpetas. Crear un archivo .reg

de Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Símbolo del sistema]

[HKEY_CLASSES_ROOT \ Directory \ shell \ Símbolo del sistema \ command] @ = "cmd. exe/k cd \ "% 1 \""

+0

Esto hará que la aplicación predeterminada, mientras que yo no quiero cambiar el programa predeterminado. – CharlesB

+0

No en XP no es así. Simplemente agrega un indicador de comando de opción – Wudang

0

he conseguido el ASSO archivo correcto CIATION usando estos comandos cmd. (es un ejemplo):

REG ADD "HKEY_CLASSES_ROOT\Applications\notepad++.exe\shell\open\command" /v @ /t REG_SZ /d "\"C:\\Program Files\\Noteepad++\\notepad++.exe\" \"%1\"" /f 
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt" /v "Application" /t REG_SZ /d "notepad++.exe" /f 
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList" /v "g" /t REG_SZ /d "notepad++.exe" /f 

assoc .txt=MyCustomType 
ftype MyCustomType="C:\Program Files\Noteepad++\notepad++.exe" "%1" 

(que es mejor para ponerlos en el archivo .bat)

Cuestiones relacionadas