Версия AutoIt: 3.3.12.0
Описание: Добрый вечер.
Ув. форумчане, подскажите есть ли возможность заменить уникальный идентификатор на некую маску в пути реестра к параметру?
Пример: есть вот такой путь
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002
В "каталоге" 00000002 есть некий параметр который нужно добавить.
Как я понимаю длинный цифробуквенный набор перед 00000002 это и есть уникальный идентификатор, вот его то и нужно как-то заМАСКировать , чтобы добавление патаметра выглядело следующим образом :
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\"МАСКА"\00000002]
"SMTP Use Auth"=dword:00000001
Примечания: нашел вот такой скрипт, но он про удаление значения, может его можно взять за основу.
Используйте для AutoIt кода тег [autoit]
madmasles.
Описание: Добрый вечер.
Ув. форумчане, подскажите есть ли возможность заменить уникальный идентификатор на некую маску в пути реестра к параметру?
Пример: есть вот такой путь
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000002
В "каталоге" 00000002 есть некий параметр который нужно добавить.
Как я понимаю длинный цифробуквенный набор перед 00000002 это и есть уникальный идентификатор, вот его то и нужно как-то заМАСКировать , чтобы добавление патаметра выглядело следующим образом :
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\"МАСКА"\00000002]
"SMTP Use Auth"=dword:00000001
Примечания: нашел вот такой скрипт, но он про удаление значения, может его можно взять за основу.
Код:
; опции
$search='=='
$kol=StringLen($search)
$found=''
; запускаем цикл поиска всех подразделов указанного раздела реестра
$i=0
While 1
$i+=1
$key = RegEnumKey("HKLM\SOFTWARE\Classes\CLSID", $i)
If @error then ExitLoop
; запускаем вложенный цикл поиска всех параметров найденного раздела реестра
$j=0
While 1
$j+=1
$Valuename = RegEnumVal('HKLM\SOFTWARE\Classes\CLSID\'&$key, $j)
If @error then ExitLoop
$Value = RegRead('HKLM\SOFTWARE\Classes\CLSID\'&$key, $Valuename)
If StringRight($Value, $kol)=$search Then
;здесь описываем, что будем делать с тем что нашли (удалять или составить список и показать)
$found&='HKLM\SOFTWARE\Classes\CLSID\'&$key&@TAB&$Valuename&@CRLF ;объединяем в список для просмотра
; RegDelete('HKLM\SOFTWARE\Classes\CLSID\'&$key, $Valuename) ; тут удаляем сразу, но не рекомендуется без просмотра
EndIf
WEnd
WEnd
If $found = '' Then
MsgBox(0, 'Сообщение', 'Ничего не найдено')
Exit
EndIf
$found=StringTrimRight($found, 2) ;удаляем последний @CRLF состоящий из двух символов
; показываем найденное в виде таблицы
$list=StringSplit($found, @CRLF, 1)
Dim $Key_Val[$list[0]+1][2]
For $i = 1 to $list[0]
$tmp=StringSplit($list[$i], @TAB)
If $tmp[0] = 2 Then
$Key_Val[$i][0]=$tmp[1]
$Key_Val[$i][1]=$tmp[2]
EndIf
Next
#include <Array.au3>
_ArrayDisplay($Key_Val, 'Найденное')
; предлагаем удалить найденные параметры
If MsgBox(4+256, 'Сообщение', 'Удалить список найденных параметров?')=6 Then
For $i = 1 to $list[0]
RegDelete($Key_Val[$i][0], $Key_Val[$i][1])
Next
EndIf
Используйте для AutoIt кода тег [autoit]
madmasles.