如何将文件扩展名与程序关联,而不将其作为默认程序

时间:2010-06-02 08:40:59

标签: windows file-association

我正在某些系统上部署一个小型转换工具,并希望用户能够通过右键单击Open with菜单运行它。但我不想更改用户与此文件类型关联的默认程序。

很容易将文件扩展名/类型与程序相关联,但如何在不更改默认程序的情况下(当然是以编程方式)进行关联?

5 个答案:

答案 0 :(得分:5)

设置以下按键对我有用:

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 :(得分:1)

您可以通过在Windows注册表中添加脚本,将脚本添加到上下文菜单(在Open with下面):

  1. 打开注册表
  2. 转到HKEY_CLASSES_ROOT\your_class\Shell
  3. 添加新密钥并为其命名
  4. 修改此密钥的(Default)值,并在上下文菜单中插入要显示的文字
  5. 在新创建的密钥
  6. 下添加名为Command的新密钥
  7. 编辑此密钥的(Default)值并插入要执行的命令
  8. 享受!

答案 2 :(得分:0)

在“文件类型”Windows对话框中,您可以在文件类型上单击“高级”,然后创建与您的应用程序绑定的自定义操作。

您可以找到以编程方式执行此操作的方法,或者至少使用等效的注册表选项创建.REG文件。

答案 3 :(得分:0)

我使用这些cmd命令实现了正确的FILE ASSOCIATION。 (只是一个例子):

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"

(最好把它们放在.bat文件中)

答案 4 :(得分:-2)

这是XP为文件夹添加命令提示选项的工作示例。创建.reg文件

Windows注册表编辑器版本5.00

[HKEY_CLASSES_ROOT \ Directory \ shell \ Command Prompt]

[HKEY_CLASSES_ROOT \ Directory \ shell \ Command Prompt \ command] @ =“cmd.exe / k cd \”%1 \“”