<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Навигация в редакторе реестра regedit.exe]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5785&amp;type=atom" />
	<updated>2011-05-06T11:08:54Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=5785</id>
		<entry>
			<title type="html"><![CDATA[AHK: Навигация в редакторе реестра regedit.exe]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48188#p48188" />
			<content type="html"><![CDATA[<p>Скрипт предоставляет возможность сразу же перейти к нужной ветке реестра в редакторе regedit.exe, минуя последовательный переход от вышележащих разделов.</p><p><span style="color: blue">Работа со скриптом.</span> Запускаем скрипт, копируем путь к нужному разделу в буфер обмена, нажимаем горячую клавишу Ctrl + Alt + R, и редактор реестра открывается в заданном месте. Корневые разделы (HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG) могут быть указаны в виде аббревиатур (HKLM, HKU, HKCU, HKCR, HKCC).<br /></p><div class="codebox"><pre><code>   LongRoot = HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_USER
              ,HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG
   StringSplit, Long, LongRoot, `,

   ShortRoot = HKLM,HKU,HKCU,HKCR,HKCC
   StringSplit, Short, ShortRoot, `,
   Return

^!vk52::      ; Ctrl + Alt + R
   Process, Exist, Regedit.exe
   if ErrorLevel
      Process, Close, Regedit.exe

   IsRoot =
   if Clipboard =
   {
      MsgBox, В буфере обмена нет текста!
      Return
   }

   Root := RegExReplace(Clipboard, &quot;(.*?)\\.*&quot;, &quot;$1&quot;)
   Loop 5
   {
      if (Root = Short%A_Index%)
         Clipboard := RegExReplace(Clipboard, &quot;^&quot; Short%A_Index%, Long%A_Index%)
      if (Root = Long%A_Index% || Root = Short%A_Index%)
         IsRoot = 1
   }

   if !IsRoot
   {
      MsgBox, В строке несуществующий корень реестра!
      Return
   }

   Clipboard := RegExReplace(Clipboard, &quot;^HKEY_USERS&quot;, &quot;My computer\HKEY_USERS&quot;)
   RegWrite, REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
      , LastKey, % Clipboard   ; если будет записан несуществующий путь, Regedit откроется в корне
   Run, Regedit</code></pre></div><p><span style="color: blue">Принцип работы скрипта.</span> Редактор реестра обычно открывается на том разделе, на котором был закрыт в предыдущее использование. Путь к этому разделу сохраняется в ключе <em>LastKey</em> ветки HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit. Чтобы заставить редактор открыться там, где нам нужно, достаточно заменить значение этого ключа.<br />У кого есть возможность, проверьте работоспособность, особенно меня интересуют ветки с корнем HKEY_USERS, т. к. они записываются по-другому (My computer\HKEY_USERS или Мой компьютер\HKEY_USERS, у меня срабатывают оба варианта).</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-05-06T11:08:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48188#p48188</id>
		</entry>
</feed>
