VBS. Как проверить установлен ли в системе MS Access

Здесь обсуждаются вопросы по программированию на Visual Basic.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

VBS. Как проверить установлен ли в системе MS Access

Сообщение UncleFather »

Задача:

Необходимо проверить установлен ли в системе MS Access либо в составе MS Office либо самостоятельно, как среда выполнения Access Runtime


Решение:

Для этого пишем сценарий, который сначала пытается создать объект «Access.Application», и, если удается, значит в системе установлен MS Access в составе MS Office.

Если при создании объекта происходит ошибка, то проверяется ключ «SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\» реестра на предмет нахождения записи, включающей в себя строку «access runtime». Если такая запись находится в какой-либо записи в этом ключе, то значит в системе установлена среда выполнения Access Runtime.

Иначе - в системе Access никак не установлен.

Код сценария на VBS

Код: Выделить всё

'Определяем константы и инициализируем переменные для проверки установки Access
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
strComputer = "localhost"
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
AccessStatus = "NotInstalled" 

'Если удается создать объект Access.Application, значит Access в составе MS Office установлен и ошибку не получим (код ошибки = 0)
'Иначе получим ошибку, для чего включаем обработчик ошибок
  On Error Resume Next
  Set AccShell = CreateObject("Access.Application")
  If Err.Number = 0 Then AccessStatus = "Access + MS Office yet installed"
  On Error GoTo 0
'Отключаем обработчик ошибок

'Если Access в составе MS Office не установлен, то начинаем проверку установлен ли Access Runtime
  If AccessStatus = "NotInstalled" Then
'Для этого перебираем ключ UNINSTALL реестра
  	Set objReg = GetObject("winmgmts://" & strComputer & _
  	  "/root/default:StdRegProv")
  	objReg.EnumKey HKLM, strKey, arrSubkeys
  
'Получаем значения ключей реестра
  	For Each strSubkey In arrSubkeys
  	  intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
  	   strEntry1a, strValue1)
  	  If intRet1 <> 0 Then
  	    objReg.GetStringValue HKLM, strKey & strSubkey, _
  	     strEntry1b, strValue1
  	  End If
'Если значение непустое
  	  If strValue1 <> "" Then
'Если значение ключа содержит "access runtime"
  		If Instr(1,LCase(strValue1),"access runtime") Then
  	    		'WScript.Echo VbCrLf & "Display Name: " & strValue1
'Значит Access Runtime установлен
  			AccessStatus = "Access Runtime yet installed"
  		End if
  	  End If
  	Next
  	
  End if

MsgBox AccessStatus

Скачать архив со сценарием можно здесь:

AccessDetect.rar
(2 КБ) 396 скачиваний

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение