3

我想检测是否使用 VB6 安装了 adobe reader。另外,如果检测到它没有安装,最好的解决方案是什么?

4

3 回答 3

1

访问“HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader”并枚举其子项。通过它,您可以获得此计算机上安装的“Adobe Reader”(以前称为“Acrobat Reader”)的版本号。

您还可以查看http://pdftohtml.sourceforge.net/ 如果找不到能够解析 pdf 文件的应用程序,您也可以将其转换为 html 并使用网络浏览器访问它,这在大多数情况下都可用操作系统。

于 2008-12-07T16:20:35.950 回答
1

有一些粗略的方法(检查程序文件目录中的文件),但我建议您声明完整的注册表函数(不是从 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 调用的程序

于 2008-11-13T23:45:41.723 回答
0

我会检查

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 命令运行它呢?你用更少的步骤完成同样的事情。

于 2009-02-16T14:05:37.730 回答