2010-06-02 10 views
7

Je déploie un petit outil de conversion sur certains systèmes et je souhaite que les utilisateurs puissent l'exécuter à partir du menu contextuel Open with. Mais je ne veux pas changer le programme par défaut que les utilisateurs ont associé à ce type de fichier.Comment associer une extension de fichier à un programme sans en faire le programme par défaut

Il est facile d'associer une extension/type de fichier à un programme, mais comment le faire (par programmation bien sûr) sans changer le programme par défaut?

Répondre

4

Réglage des touches suivantes a fonctionné pour moi:

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

Vous pouvez ajouter des scripts dans le menu contextuel (ci-dessous Ouvrir avec) en ajoutant dans le registre Windows:

  1. regedit Ouvrir
  2. Aller HKEY_CLASSES_ROOT\your_class\Shell
  3. Ajouter une nouvelle clé et donnez-lui un nom
  4. Modifier la valeur (Default) de cette clé et insérez le texte que vous souhaitez afficher dans le menu contextuel
  5. Ajouter une nouvelle clé nommée Command sous votre nouveau
  6. Modifiez la valeur (Default) de cette clé et insérez la commande que vous souhaitez exécuter
  7. Enjoy!
+0

C'est aussi ce que j'ai essayé avant, mais dans mon cas, il ne suffit pas; l'association par défaut a été faite à la main dans Explorer, et pour une raison quelconque, elle bloque la gestion de ce fichier. – CharlesB

0

Dans la boîte de dialogue Windows "Types de fichiers", vous pouvez cliquer sur "Avancé" sur votre type de fichier et créer une action personnalisée liée à votre application.

Peut-être que vous pouvez également trouver un moyen de le faire de manière programmatique, ou au moins créer un fichier .REG avec les options de registre équivalentes.

+0

Oui, je veux le faire par programme – CharlesB

+0

Vous pouvez utiliser les fonctions de registre Win32 - http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx - pour créer/modifier les entrées de registre pertinentes – ob1

-2

Voici un exemple travaillé pour XP ajoutant une option d'invite de commande aux dossiers. Créez un fichier .reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Invite de commandes]

[HKEY_CLASSES_ROOT \ Directory \ shell \ Invite de commande commande \] @ = "cmd. exe/k cd \ "% 1 \" »

+0

Cela fera l'application par défaut, alors que je ne veux pas changer le programme par défaut. – CharlesB

+0

Pas sur XP ce n'est pas le cas. Il ajoute simplement une invite de commande d'option – Wudang

0

J'ai obtenu le bon FILE ASSO CIATION utilisant ces commandes cmd. (juste un exemple):

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" 

(il est préférable de les mettre dans le fichier .bat)

Questions connexes