Поиск и добавление значения параметра в реестре
Здравствуйте, ув. форумчане!
Прошу помощи в vbs скрипте. Искал на форуме и в рунете, но не нашел. Суть скрипта такова: Необходимо найти уже заданное значение в реестре и дописать в него нужное, не изменяя всего предыдущего значения. Ели же параметр пуст, то добавить новое значение. Пытался реализовать это своими силами, но что то не выходит. Сам скрипт
Код:
Option Explicit Не пойму, что дописать далее, поэтому прошу вашей помощи! |
|
Цитата:
Было до работы скрипта
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\CompMgmt]
"MUIVerb"="Дополнительно" "SubCommands"="controlpanel;services;regedit;msconfig;gpedit;taskschd;eventvwr" "Icon"="imageres.dll,104" "Position"="Top" Стало после работы скрипта
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\CompMgmt]
"MUIVerb"="Дополнительно" "SubCommands"="chkdsk;controlpanel;services;regedit;msconfig;gpedit;taskschd;eventvwr" "Icon"="imageres.dll,104" "Position"="Top" Необходимость в VBS скрипте возникла после невозможности отображения данного контекстного меню, если удалить подраздел, на который ссылается первое значение в параметре SubCommands Удаление подраздела controlpanel
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\controlpane l]
"MUIVerb"="Панель управления" "Icon"="imageres.dll,22" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\controlpane l\command] @="control.exe" Если бы система игнорировала несуществующие подразделы, на которые ссылаются строчки в SubCommands, то было бы идеально. Но этого не происходит, поэтому приходится искать такие решения. |
in-com, это не «добавить ещё одну строчку», а «вставить подстроку в начало строки, дополнив её точкой с запятой, если таковая подстрока отсутствует в строке». Но ладно, понятно.
А что делать, если таковой раздел, как: Код:
HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\CompMgmt |
Вложений: 1
Цитата:
Цитата:
|
in-com, спасибо за файл реестра, но всё-таки — что в этом случае нужно делать?
Впрочем, вот Вам примерная болванка на WSH на добавление подстроки «chkdsk», в случае её отсутствия, в начало значения строкового параметра «SubCommands» раздела «HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\CompMgmt»: Скрытый текст
Код:
Option Explicit |
Цитата:
А можно сделать, чтобы отдельный скрипт искал и удалял уже существующую подстроку «chkdsk;» в любом месте строки, прописанной в строковом параметре «SubCommands»? Пробовал так
Option Explicit Const HKEY_CLASSES_ROOT = &H80000000 Dim objSWbemObjectEx Dim strValue Set objSWbemObjectEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default").Get("StdRegProv") If objSWbemObjectEx.GetStringValue(HKEY_CLASSES_ROOT, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\CompMgmt", "SubCommands", strValue) = 0 Then If UBound(Filter(Split(strValue, ";"), "chkdsk", True, vbTextCompare)) = 0 Then strValue = Replace(strValue,"chkdsk;", "") WScript.Echo strValue End If Else WScript.Echo "Can't find subkey or parameter." End If WScript.Quit 0 Что интересно, WSH отображает, что подстрока удалена, но сохранять значение не хочет. |
Цитата:
Цитата:
Скрытый текст
Код:
Option Explicit |
Цитата:
|
Время: 15:29. |
Время: 15:29.
© OSzone.net 2001-