Alexander A Manaeff -

 
 

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

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

Модератор: UncleFather

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

Сообщение UncleFather » 16 июн 2016 19:24, Чт

Задача:

Необходимо проверить установлен ли в системе 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 КБ) Скачиваний: 88
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1326
Зарегистрирован: 17 авг 2004 16:20, Вт

Вернуться в Visual Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Alexander A Manaeff -
@Mail.ru .