我想检测是否使用 VB6 安装了 adobe reader。另外,如果检测到它没有安装,最好的解决方案是什么?
3 回答
访问“HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader”并枚举其子项。通过它,您可以获得此计算机上安装的“Adobe Reader”(以前称为“Acrobat Reader”)的版本号。
您还可以查看http://pdftohtml.sourceforge.net/ 如果找不到能够解析 pdf 文件的应用程序,您也可以将其转换为 html 并使用网络浏览器访问它,这在大多数情况下都可用操作系统。
有一些粗略的方法(检查程序文件目录中的文件),但我建议您声明完整的注册表函数(不是从 vb 获取设置),如http://www.windowsdevcenter.com/pub/a/windows/2004 /06/15/VB_Registry_Keys.html并获取
HKEY_CLASSES_ROOT\.pdf
如果那里有,那么可以阅读 pdf 的东西就在那里(这就是你想要的,对吧?)。
作为奖励,HKEY_CLASSES_ROOT\.pdf\OpenWithList有一个打开 .pdf 文件的注册应用程序列表(哇)......该列表上的键名是您可以使用shell("start "+ OpenAppName)从 vb 调用的程序
我会检查
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
浏览该列表将为您提供所有已安装的程序。寻找特定于应用程序的注册表项通常会起作用,但有时在卸载应用程序时会留下它们。
类根非常适合显示是否安装了任何 PDF 阅读器。
此外,如果您只想使用默认应用程序来处理 PDF,您可以使用以下方法。(这是在 VBScript 中,但在 VB6 上应该是一样的)
File = <PDF FILE HERE>
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Chr(34) & File & Chr(34)
对评论的回应
在 vb6 中有几种访问注册表的方法,RegRead就是其中之一。 WMI是另一种方式。我会使用 WMI,因为您可以轻松地枚举子键。
读取 HKEY_CLASSES_ROOT 并没有什么问题,但是如果您只是要启动默认的 pdf 处理程序,为什么不使用上面的 WshShell.Run 命令运行它呢?你用更少的步骤完成同样的事情。