VBScript: получить тип значения реестра и удалить/создать значение реестра *без* использования WMI

Мне нужно создать сценарий, который не использует WMI, для выполнения следующих действий:

  1. Проверьте, существует ли значение реестра и имеет ли оно требуемый тип.
  2. Если значение реестра существует, но имеет неверный тип, удалите его.
  3. Если значение реестра не существует или было удалено на шаге № 2, создайте его с определенным типом
  4. Если значение реестра существует и правильного типа, убедитесь, что его значение правильное.

Почти все фрагменты кода VBScript для манипуляций с реестром, которые я нашел в Интернете, основаны на WMI. По определенным причинам это неприемлемо.

Есть ли у вас какие-либо рекомендации о том, как манипулировать реестром, не полагаясь на WMI?


person pepoluan    schedule 27.08.2012    source источник
comment
Проанализируйте содержимое файла REG, созданного из командной строки REG.EXE /EXPORT.   -  person Jay    schedule 27.08.2012
comment
@Джей спасибо! Если вы напишете свой комментарий в качестве ответа, я с удовольствием проверю его для вас...   -  person pepoluan    schedule 28.08.2012


Ответы (1)


VBScript/JScript из Windows Scripting Host (WSH) имеют функции реестра из объекта WScript.Shell, но они ограничены чтением, записью и удалением ключа/значения. Нет никакой функции для получения информации о существовании ключа или значения реестра, кроме чтения и проверки результата. Функция получения типа значения реестра также отсутствует.

Другой метод доступа к реестру, кроме как из объекта WMI, заключается в использовании упакованного инструмента командной строки REG.EXE через функцию WScript.Shell.Exec. Это делается с помощью параметров команды QUERY, ADD, DELETE, IMPORT или EXPORT. Запустите REG.EXE, чтобы отобразить сводку об использовании, или REG.EXE QUERY /?, REG.EXE EXPORT /? и т. д., чтобы отобразить сведения об использовании команды.

Вывод команды QUERY будет отображать данные значения и его тип, если он существует. Можно также использовать команду EXPORT, за исключением того, что результат будет сохранен в файле REG. Результат работы инструмента REG.EXE также можно перенаправить в файл с помощью CMD.EXE. Например:

CMD.EXE /C REG.EXE QUERY "HKEY_CURRENT_USER\Control Panel\Cursors" > "reg output.txt"

Обратите внимание, что содержимое файла output.txt отличается от содержимого файла REG. Файл REG имеет стандартный формат, который частично описан в базе знаний Microsoft KB310516.

Проверив код выхода инструмента REG.EXE и проанализировав его выходные данные или сгенерированный файл REG, можно получить типы значений реестра. Манипуляции с реестром, которые можно выполнить с помощью объекта WScript.Shell, следует использовать, если это возможно и если производительность вызывает беспокойство.

person Jay    schedule 28.08.2012