Я хочу определить, установлен ли Adobe Reader с использованием VB6. Также, если будет обнаружено, что он не установлен, какое будет лучшее решение?





Есть грубые способы (проверка файлов в каталоге Program files), но я бы рекомендовал вам объявить функции полного реестра (не getSetting из vb), как в http://www.windowsdevcenter.com/pub/a/windows/2004/06/15/VB_Registry_Keys.html, и fetch
HKEY_CLASSES_ROOT \ .pdf
Если это так, то есть что-то, способное читать PDF-файлы (а вы ведь этого хотите, правда?).
В качестве бонуса HKEY_CLASSES_ROOT \ .pdf \ OpenWithList имеет список (ничего себе) зарегистрированных приложений, которые открывают файлы .pdf ... ключевые имена в этом списке - это программы, которые вы можете запускать из vb с помощью оболочка ("старт" + OpenAppName)
Откройте «HKEY_LOCAL_MACHINE \ SOFTWARE \ Adobe \ Acrobat Reader» и перечислите его подразделы. Таким образом вы получите номера версий установленных на этом компьютере «Adobe Reader» (ранее «Acrobat Reader»).
Вы также можете посмотреть http://pdftohtml.sourceforge.net/ Если вы не можете найти приложение, которое может анализировать файлы PDF, вы также можете преобразовать его в HTML и получить к нему доступ с помощью веб-браузера, который доступен в большинстве операционных систем.
Я бы проверил
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Просматривая этот список, вы получите все установленные программы. Поиск записей реестра для конкретных приложений обычно работает, но иногда при удалении приложения они остаются позади.
Корень класса хорошо показывает, установлен ли какой-либо PDF Reader.
Кроме того, если вы просто хотите использовать приложение по умолчанию для обработки 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? Вы делаете то же самое, сделав на один шаг меньше.
Но как получить доступ к реестру в vb (не .net)? Помимо этого, есть несколько возможностей ... ваши швы для меня несколько далеко идущие, потому что в HKEY_CLASSES_ROOT \ вы можете получить все приложения / классы, подходящие для запуска / обработки документов.
Это должен быть Adobe PDF Reader или вы ищете какой-нибудь PDF Viewer?