2010-06-02 10 views
7

Sto distribuendo un piccolo strumento di conversione su alcuni sistemi e voglio che gli utenti siano in grado di eseguirlo dal menu di scelta rapida Open with. Ma non voglio cambiare il programma predefinito che gli utenti hanno associato a questo tipo di file.Come associare un'estensione di file a un programma senza renderlo il programma predefinito

È facile associare un'estensione/tipo di file a un programma, ma come farlo (ovviamente programmaticamente) senza modificare il programma predefinito?

risposta

4

impostando le seguenti chiavi funzionato per me:

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

È possibile aggiungere script per il menu contestuale (sotto Apri con) con l'aggiunta nel registro di Windows:

  1. Aprire regedit
  2. Goto HKEY_CLASSES_ROOT\your_class\Shell
  3. aggiungere una nuova chiave e dargli un nome
  4. Modificare il valore (Default) di questa chiave e inserire il testo che si desidera visualizzare nel menu contestuale
  5. aggiungere una nuova chiave denominata Command sotto il vostro appena creato chiave
  6. Modificare il valore (Default) di questa chiave e inserire il comando che si desidera eseguire
  7. Divertiti!
+0

Questo è anche quello che ho provato prima, ma nel mio caso non è sufficiente; l'associazione predefinita è stata creata manualmente in Explorer e, per qualche motivo, blocca questa gestione dei file. – CharlesB

0

Nella finestra di dialogo "Tipi di file" è possibile fare clic su "Avanzate" sul tipo di file e creare un'azione personalizzata legata all'applicazione.

Probabilmente si può anche trovare un modo per farlo in modo programmatico, o almeno creare un file .REG con le equivalenti opzioni di registro.

+0

Sì, desidero farlo a livello di programmazione – CharlesB

+0

È possibile utilizzare le funzioni di registro Win32 - http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx - per creare/modificare le voci di registro pertinenti – ob1

-2

ecco un esempio funzionante per XP che aggiunge un'opzione di prompt dei comandi alle cartelle. Creare un file reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Prompt dei comandi]

[HKEY_CLASSES_ROOT \ Directory \ Prompt dei comandi \ command \ shell] @ = "cmd. exe/k cd \ "% 1 \""

+0

Questo renderà l'app predefinita, mentre non voglio cambiare il programma predefinito. – CharlesB

+0

Non su XP no. Semplicemente aggiunge un'opzione prompt dei comandi – Wudang

0

ho raggiunto il corretto ASSO FILE CIATION usando questi comandi cmd. (solo un esempio):

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" 

(è meglio metterli in .bat file)

Problemi correlati