1

Тема: AHK: Рекурсивно заменить строку в реестре

Помогите составить скрипт, поиск и замена значения параметра,
например: REG_SZ: "C:\Program Files" на "D:\zz\Program Files"

2

Re: AHK: Рекурсивно заменить строку в реестре

Непонятно, нужно чтобы ключ имел значение "C:\Program Files", или содержал эту строку?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: semiono, 2016-06-03 19:51:55)

Re: AHK: Рекурсивно заменить строку в реестре

Чтобы содержал строку, всмысле там может быть "C:\Program Files\Windows Media Pleer" и что угодно.
Тут видимо регулярные выражения надо подключить...

Я новичёк, читаю документацию, но пока не могу начать, сложно.

Надо чтобы менялся заданный паттерн * "Program Files" * рекурсивно обходя реестр на совпадения

Диалоги никакие не нужны, просто работающий скрипт.
Нужно для того чтобы не делать это вручную

4

Re: AHK: Рекурсивно заменить строку в реестре

Так:

SetBatchLines, -1
for k, v in ["HKCR", "HKU", "HKCU", "HKCR", "HKCC"]
	Loop, Reg, % v, R
	{
		RegRead, OutputVar
		if (A_LoopRegType = "REG_SZ" && InStr(OutputVar, "C:\Program Files"))
			RegWrite, % RegExReplace(OutputVar, "\QC:\Program Files\E", "D:\zz\Program Files")
	}

Перед изменением реестра делайте бекап.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Рекурсивно заменить строку в реестре

Или, может, так быстрее будет, не проверял:

SetBatchLines, -1
for k, v in ["HKCR", "HKU", "HKCU", "HKCR", "HKCC"]
	Loop, Reg, % v, R
	{
		if (A_LoopRegType = "REG_SZ")  {
			RegRead, OutputVar
			if InStr(OutputVar, "C:\Program Files")
				RegWrite, % RegExReplace(OutputVar, "\QC:\Program Files\E", "D:\zz\Program Files")
		}
	}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Рекурсивно заменить строку в реестре

Спасибо!