将扩展程序与程序关联的脚本
-
03-07-2019 - |
题
我的客户正在某些工作站用OpenOffice取代MS Office。我的程序使用.xml扩展名(使用开放格式)将文件导出到Excel,并使用当前关联的程序打开它(使用ShellExecute)
问题是OpenOffice没有注册与之关联的.xml扩展名。
手动关联工作正常,但我想创建一个.reg或其他东西来轻松更改设置。
我正在PC中注册并且已经进行了更改,但
"HKEY_CLASSES_ROOT\.xml"
键没有任何引用OpenOffice的内容。
协会存储在哪里?如何制作脚本来完成工作?
解决方案
真正的关联存储在" HKEY_CLASSES_ROOT \ .xml"
指向的键中。
在我的机器上,该键的默认值为" xmlfile"
,很可能与您的相同。
让我们转到" HKEY_CLASSES_ROOT \ xmlfile"
。在那里,您可以看到(并更改)将用于启动该类型文件的命令:
HKEY_CLASSES_ROOT\xmlfile\shell\open\command
Windows使用这种重定向将多个文件扩展名映射到同一文件类型,从而映射到同一个应用程序。
在" HKEY_CLASSES_ROOT \ xmlfile \ shell"
下,有多个类似于“动词”的子键。你可以对文件做些什么同样," shell"
键的默认值决定了双击文件时使用了哪些动词。在我的情况下,这是" open"
。
<强>结论:强>
有了这些知识,创建关联脚本的最简单方法是使用regedit导出包含该更改的.reg文件,并通过双击将其应用于目标计算机或:
regedit /s new_xml_association.reg
或(如果您使用的是XP或更高版本且知道自己做了什么)用以下内容覆盖当前值:
reg add "HKEY_CLASSES_ROOT\xmlfile\shell\open\command" /ve /d "path\to\program %1"
无论如何,建议深入研究 reg add /?
命令。第一种解决方案更安全。
其他提示
考虑dos命令 assoc
:
C:&gt; assoc /? 显示或修改文件扩展名 协会
ASSOC [.ext [= [fileType]]]
.ext指定文件 关联文件类型的扩展名 with fileType指定文件 要与文件关联的类型 扩展
键入不带参数的ASSOC 显示当前文件关联。 如果仅使用文件调用ASSOC 扩展,它显示当前 该文件的文件关联 延期。没有指定任何内容 文件类型和命令将删除 该文件的关联 扩展
在这种情况下使用文件关联似乎是错误的做法。 您希望您的应用程序在OpenOffice中打开该文件,但如果您的用户想要保持XML文件的文件关联不变,该怎么办?如果他们的系统上的其他内容也依赖于该关联怎么办?在这种情况下,你正在破坏他们的系统。如果你是IT人员那么也许就可以了(仍然有问题的编程实践),但如果没有,那么这是一件坏事。
使用OpenOffice COM实现来代替打开文件。
这里有一个简单的例子: http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html
我在寻找同样的答案时遇到了这个问题。我找到了一个更好的解决方案,使用Windows FindExecutable API,可以使用PInvoke从C#中使用。