![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как найти и изменить параметр реестра не зная где он находится |
|
VBS/WSH/JS - [решено] Как найти и изменить параметр реестра не зная где он находится
|
Пользователь Сообщения: 61 |
Всем привет!
Помогите кто может.Нужно найти параметр реестра в ветке HKLM не зная полного пути к нему и создать переменную с полным путём к этому параметру.В пути к параметру есть {SID} который меняется при переустановке Windows и на каждом компьютере он тоже разный.Нашёл несколько скриптов в интернете. "Скрипт 1" - не работает с REG_BINARY но с SZ и DWORD работает. "Скрипт 2" - работает с BINARY но не знаю как написать поиск пути к параметру и создание переменной. Пытался объединить оба скрипта не вышло. Скрипт 1 Option Explicit Dim SectionName Dim tmpRegFile Dim FindValue Dim AddValue Dim objWSS Dim objFSO Dim RegFile Dim CurrSection Dim GetLine Dim KeyName Dim strPrompt Dim ReturnValue SectionName = "HKEY_CURRENT_USER\Software" tmpRegFile = "z:\tmp.reg" FindValue = "Строка поиска" AddValue = "Строка замены" Set objWSS = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") objWSS.Run "regedit /e " & tmpRegFile & " """ & SectionName & """", 2, True Set RegFile = objFSO.OpenTextFile(tmpRegFile, 1, True, -1) Do While RegFile.AtEndOfStream <> True GetLine = RegFile.ReadLine If Left(GetLine, 6) = "[HKEY_" Then CurrSection = Mid(GetLine, 2, Len(GetLine) - 2) Else If InStr(GetLine, FindValue) Then strPrompt = "Вы желаете заменить значение ключа " & GetLine & vbNewLine & _ "в разделе " & CurrSection & vbNewLine & _ "на значение """ & AddValue & """?" ReturnValue = MsgBox(strPrompt, 35, "Замена в реестре") If ReturnValue = 6 Then KeyName = Replace(Split(GetLine, "=")(0), """", "") If KeyName = "@" Then KeyName = "" objWSS.RegWrite CurrSection & "\" & KeyName, AddValue, "REG_SZ" ElseIf ReturnValue = 2 Then Exit Do End If End If End If Loop RegFile.Close 'Следующая строка закомментирована для возможности отката изменений 'objFSO.DeleteFile tmpRegFile Set objWSS = Nothing Set objFSO = Nothing MsgBox "Скрипт завершил работу" WScript.Quit const HKEY_LOCAL_MACHINE = &H80000002 FindValue = "{4b361010-def7-43a1-a5dc-071d955b62f7},15" strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{75a38608-57f5-412d-a267-62e7cce381c1}\FxProperties" AddValue = Array(&H41,&H00,&Hf8,&H73,&H01,&H00,&H00,&H00,&Hfc,&Hff,&Hff,&Hff,&Hf8,&Hff,&Hff,&Hff,&Hf6,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hfa,&Hff,&Hff,&Hff,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00) Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strKeyPath, "{4b361010-def7-43a1-a5dc-071d955b62f7},15",AddValue |
|
Отправлено: 15:55, 09-02-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата krot183:
|
|
Отправлено: 22:49, 10-02-2014 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, Я отслеживал настройки через Regshot а потом проверял каждый параметр чтобы удалить лишнее.В {75a38608-57f5-412d-a267-62e7cce381c1} три параметра которые включают поправку на помещение ,изменяют настройки расстояния до колонок и громкость в db на каждую колонку.
Сделал батник но там тоже проблема нет разрешений на ветку реестра. |
Последний раз редактировалось krot183, 10-02-2014 в 23:19. Отправлено: 23:06, 10-02-2014 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать krot183, я могу повторить вопрос и в третий раз.
Выше Вы пишете, что имя подраздела «{75a38608-57f5-412d-a267-62e7cce381c1}» разное на разных машинах, кроме того, меняется при переустановке. В примере, который Вы выше выкладывали по моей просьбе, два подраздела. Я спрашиваю Вас, как определить нужный подраздел среди прочих, когда их будет два, три, четыре и более? |
Отправлено: 23:21, 10-02-2014 | #13 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, Параметры в этом разделе не меняются.Меняется только {SID} раздела {75a38608-57f5-412d-a267-62e7cce381c1}
Искать по параметрам раздела. Если бы знал как правильно написать не спрашивал бы. |
Отправлено: 23:29, 10-02-2014 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата krot183:
могут находиться исключительно в одном (и только в одном!) из разделов «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\SID's», так? |
|
Отправлено: 00:03, 11-02-2014 | #15 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, да.
|
Отправлено: 08:51, 11-02-2014 | #16 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Помогите хто нибудь со скриптом не получается ничё.
|
Отправлено: 20:49, 16-02-2014 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Option Explicit Const HKEY_LOCAL_MACHINE = &H80000002 Dim strComputer Dim strKey Dim arrParameters Dim objSWbemLocator Dim objSWbemServicesEx Dim objSWbemObjectEx Dim arrSubKeys Dim strSubKey Dim objRegExp Dim arrParameter Dim lngValue Dim arrValues Dim boolFound Dim strResult strComputer = "." strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render" arrParameters = Array( _ Array("{4b361010-def7-43a1-a5dc-071d955b62f7},14", "DWORD"), _ Array("{4b361010-def7-43a1-a5dc-071d955b62f7},15", "BINARY"), _ Array("{4b361010-def7-43a1-a5dc-071d955b62f7},16", "BINARY") _ ) Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\default") Set objSWbemObjectEx = objSWbemServicesEx.Get("StdRegProv") If objSWbemObjectEx.EnumKey(HKEY_LOCAL_MACHINE, strKey, arrSubKeys) = 0 Then If Not IsNull(arrSubKeys) Then Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^\{[\da-fA-F]{8}(?:-[\da-fA-F]{4}){3}-[\da-fA-F]{12}}$" For Each strSubKey In arrSubKeys If objRegExp.Test(strSubKey) Then boolFound = True For Each arrParameter In arrParameters Select Case arrParameter(1) Case "DWORD" If objSWbemObjectEx.GetDWORDValue(HKEY_LOCAL_MACHINE, strKey & "\" & strSubKey & "\FxProperties", arrParameter(0), lngValue) <> 0 Then boolFound = False End If Case "BINARY" If objSWbemObjectEx.GetBinaryValue(HKEY_LOCAL_MACHINE, strKey & "\" & strSubKey & "\FxProperties", arrParameter(0), arrValues) <> 0 Then boolFound = False End If Case Else ' Not implemented End Select Next If boolFound Then strResult = "HKLM\" & strKey & "\" & strSubKey WScript.Echo strResult Exit For End If End If Next Set objRegExp = Nothing If Not boolFound Then WScript.Echo "Can't find any right subkey in [HKLM\" & strKey & "]." WScript.Quit 3 End If Else WScript.Echo "Nothing found in [HKLM\" & strKey & "]." WScript.Quit 2 End If Else WScript.Echo "Not found subkey [HKLM\" & strKey & "]." WScript.Quit 1 End If Set objSWbemObjectEx = Nothing Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing WScript.Quit 0 |
Отправлено: 08:01, 17-02-2014 | #18 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, А где вводить значения или это просто поиск?
|
Отправлено: 08:30, 17-02-2014 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата krot183:
|
|
Отправлено: 08:51, 17-02-2014 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как найти, где находится @c.atdmt.com | C181UMZ | Лечение систем от вредоносных программ | 1 | 29-07-2013 23:36 | |
CMD/BAT - [решено] Найти в реестре параметр и записать в переменную имя ветки в которой он находится | root221 | Скриптовые языки администрирования Windows | 11 | 25-11-2012 07:54 | |
V. 2007 - Сервер Microsoft Exchange как изменить имя, где оно находится. | vladimirz | Microsoft Exchange Server | 7 | 22-07-2010 20:19 | |
как удалить ключ реестра если он не хочет | oIo_DeN_oIo | Microsoft Windows 2000/XP | 10 | 23-12-2006 02:25 |
|