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

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:| :) :wink: :D :lol: :( :cry: 8) :o :oops: :? :x :P :evil: :twisted: :roll: :!: :?: :idea: :arrow: :mrgreen:
Ещё смайлики…

Markdown is OFF

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: VBS. Как проверить установлен ли в системе MS Access

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 КБ) 399 скачиваний

Вернуться к началу