IT → Существует ли раздел в реестре на VBScript

Дек 26, 2011


В предыдущей статье описывался один из способов определения установленной программы на компьютере пользователя. Реализация данного способа была выполнена в виде функции на языке VBScript.
Если присмотреться более внимательно, можно обнаружить, что в ней использовался, достаточно, нестандартный способ проверки существования ключа. Стоит заметить, что речь идет именно об определении ключа, а не параметра или его значения.

Для того, чтобы определить существует ключ или нет, функция проверяет параметр по умолчанию, который всегда присутствует в любом разделе реестра. Значение дефолтного параметра чаще всего не задано, но тем не менее он есть.

Поэтому, чтобы проверить наличие определенного раздела в реестре, достаточно проверить его параметр по умолчанию. На VBScript, чтобы получить значение параметра по умолчанию какого-либо раздела, следует к имени раздела, в конце поставить дополнительный слэш.

Приведем примеры чтения значений из реестра, из которых наглядно показывается в чем их отличие.

Извлечение значение из параметра Windows, который находится в разделе HKLM\SOFTWARE\Microsoft\

WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows")

Извлечение значение из параметра по умолчанию, который находится в разделе HKLM\SOFTWARE\Microsoft\Windows\

WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\")


Также нужно учитывать, что если раздела не существует, как и его параметра по умолчанию, то будет выброшено исключение, которое нужно корректно обработать.

Суммировав все вышесказанное, мы получим достаточно простую функцию, листинг которой представлен далее.

Листинг 1. Функция проверки существования раздела.

Function KeyExists(KeyName)
    On Error Resume Next
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegRead(KeyName & "\")

    If Err.Number <> 0 Then
        KeyExists = False
    Else
        KeyExists = True
    End If
End Function


А чтобы картина была полной, ниже показана функция, с помощью которой проверяется существование параметра в реестре.

Листинг 2. Функция проверки существования параметра.

Function ValueExists(ValueName)
    On Error Resume Next
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegRead(ValueName)

    If Err.Number <> 0 Then
        ValueExists = False
    Else
        ValueExists = True
    End If
End Function


Каждый системный администратор должен иметь в своем арсенале, столь необходимые функции.

В любом преуспевающем бизнесе, требуется вести финансовую отчетность. Канули в лету, те времена, когда бухгалтеры считали на калькуляторах и делали вручную все расчеты. Пришла эра компьютерных вычислений. Всё популярнее, и популярнее, становится софт для ведения бухгалтерии. Кончено же, первое, что приходит на ум, это 1С:Бухгалтерия. Однако, это не единственное программное обеспечение, которое позволяет оптимизировать работу бухгалтера. Есть множество функциональных и гибких систем, которые наиболее полно отвечают всем бизнес-задачам.

Post to Twitter

Похожие статьи:

  1. Определение установлена ли программа на VBScript

Комментарии (1)

  1. avatar

    Bo0oM
    Январь 16th, 2012 at 17:31 #

    Как то смотрел восстановление реестра после вирусов с помощью VBS, можно так же задействовать проверку, существует ли определённый важный раздел. Или удалять лишние файлы из автозагрузки, но думаю поверка ветки тут не обязательна.

Ваш комментарий

Rambler's Top100 Яндекс.Метрика