Что нового

[Реестр] Менеджер контекстного меню

erlik

Продвинутый
Сообщения
317
Репутация
84
AutoIt: 3.3.8.1
Версия: 1.4 от 15.02.2014

Категория: Реестр, Автоматизация, Разное

Описание: Context Menu Manager для Windows 7

Возможности программы
======================

1. Добавление, удаление и редактирование пунктов
контекстного меню объектов проводника.
2. Встроенные команды (более 60-ти) для быстрого встраивания в разные меню.
3. Создание каскадных\выпадающих меню.
4. Поддержка большого числа объектов имеющих контекстное меню.

Системные требования
=====================

Утилита работает на любой версии Windows, начиная с Windows XP
и до Windows 8, но на Windows XP нельзя создавать каскадные меню,
а также не поддерживаются параметры Icon и Position для пунктов меню.

Ограничения программы
======================

1. Программа не предназначена для редактирования обработчиков контекстного меню - раздел
shellex\ContextMenuHandlers. Поэтому команды из данного раздела она не считывает.
Однако три первые встроенные команды добавляются именно туда, без отображения этого действия в списке.

Подробнее читайте ниже. Очень много букаф :smile:
Расписал большинство нюансов, чтобы все было понятно.
Подробный FAQ так же есть в архиве с программой.
Описание
=========
Для начала немного теории. Контекстное меню есть у большинства объектов
операционной системы. Все параметры меню хранятся в специальных разделах реестра,
к примеру HKEY_CLASSES_ROOT\*\shell - для файлов всех типов или HKEY_CLASSES_ROOT\Directory\shell -
для папок. Отображаемое имя пункта записывается в параметр по умолчанию подраздела shell\раздел пункта.
Вместо параметра по умолчанию может использоваться параметр MUIVerb, который имеет больший приоритет,
если наличествует и тот и другой. В случае каскадного меню (с выпадающим списком) для основного пункта
используется именно MUIVerb, а иначе меню будет нерабочим. Для подпунктов каскадного меню могут использоваться
оба варианта. Собственно выполняемая на клик пункта команда считывается системой из параметра по умолчанию
подраздела HKEY_CLASSES_ROOT\объект с меню\shell\раздел пункта\command. Либо из параметра DelegateExecute
того же подраздела - в этом случае вместо команды там указывается CLSID обработчика команды. Но так как параметр
DelegateExecute программа только отображает, но не редактирует, не пытайтесь его перезаписать.
Основное отличие каскадного меню (помимо вышеуказанного) в том, что во-первых в разделе основного пункта отсутствует
подраздел command, и во-вторых присутствует параметр SubCommands, в котором через точку с запятой указываются
названия ключей реестра непосредственно подпунктов. Сами они хранятся в особом разделе -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell.
А теперь от теории перейдем к практике.


Использование программы
========================
Программа предоставляет две основные возможности: создание меню вручную и использование предопределенных команд.
В первом случае вся ответственность за корректность функционирования меню ложится на пользователя, хотя программа
старается максимально оградить вас от неправильных действий, выдавая запросы и предупреждения, либо просто блокируя
попытки сделать что-нибудь не то. У многих элементов интерфейса есть всплывающие подсказки - обращайте на них внимание.
И тогда процесс создания своего меню будет максимально прост и безопасен. К примеру, вы хотите создать свой пункт в
контекстном меню объекта Мой компьютер. Выбираем его в дереве элементов (список его команд меню загружается по умолчанию при запуске),
переходим к элементам ввода в середине программы и заполняем следующие поля:
1) Название раздела реестра - любое английское либо русское имя, желательно ассоциирующееся с будущим пунктом меню.
2) Название пункта - его имя, которое будет отображаться в самом меню.
3) Иконка пункта - заполняем по желанию, иконку можно выбрать в диалоге Выбора иконок, ткнув на кнопочку справа.
Библиотеку или исполняемый файл, содержащий иконки также можно сменить. По умолчанию это shell32.dll.
4) позиция пункта - выбираем по желанию (Top\Вверху, Middle\В середине, Bottom\Внизу) положение, где будет располагаться пункт
по отношению к другим. Если ничего не выбирать, то по умолчанию считается, что вверху. Так что выбирать необязательно.
5) команда - главный элемент вашего меню, поэтому заполняем обязательно (впрочем, вам об этом напомнят, если забудете),
указав имя файла или специально сформированную команду, например на batch, vbs или PowerShell(если владеете).
6) Нажимаем кнопку 'применить изменения', подтверждаем свои действия на выданный запрос.
Можно открыть контекстное меню и полюбоваться на появившийся там новый пункт.

Чекбокс Extended добавляет пункту атрибут расширенный - то есть пункт будет отображаться в меню только при нажатии клавиши
Shift. Чекбокс Disabled отключает пункт не удаляя его из реестра. Оба параметра работают только для обычных пунктов.

Теперь то же самое, но с использованием готовых команд:
1) Выбираем в дереве элементов нужный объект, с контекстным меню которого вы собираетесь работать.
2) Выбираем в списке нужную команду - на клик левой кнопкой мыши поля элементов ввода будут заполнены автоматически.
3) Нажимаем кнопку со стрелочкой влево - она добавит вашу команду в меню выбранного объекта, после подтверждения запроса.

Как сделать еще быстрее - просто перетаскиваем команду из правого списка в левый. И никаких запросов!

Небольшое примечание - при перетаскивании или добавлении кнопкой новый пункт появляется в левом списке в его самом конце,
и, кстати, все изменения в центральных элементах ввода игнорируются. Для ввода отредактированных данных нужно использовать
кнопку 'применить изменения'.

Еще одно важное примечание касающееся первых трех пунктов из числа готовых. Команды Копировать в папку и Переместить в папку
на Windows 7 уже существуют, в разделе AllFilesystemObjects (Все объекты NTFS). Имена их разделов умышленно сделаны
совпадающими с системными - для того, чтобы программа предупредила вас об их наличии в реестре. Поэтому добавлять их стоит
только на Windows XP - если они все еще отсутствуют у вас. Третья команда - Переключение окон - добавляет возможность
использовать Flip 3D из контексного меню - без неудобного зажимания горячих клавиш. Добавлять ее стоит в меню объекта
Рабочий стол и папки (будет отображаться в меню и рабочего стола и проводника).
Все три команды пишутся в раздел HKEY_CLASSES_ROOT\объект с меню\shellex\ContextMenuHandlers\раздел пункта и поэтому не будут
отображаться программой в левом списке.

Для удаления пунктов просто выберите в списке ненужный вам элемент и нажмите кнопку со стрелочкой вправо. Подтвердите ваши действия.
Еще быстрее - просто перетащите пункт на эту самую кнопочку!

Для быстрого стирания текста из полей ввода просто кликайте по надписям.


Как создать пункты каскадного меню
===================================
Для того, чтобы программа знала, что вы собираетесь создавать каскадное меню, нужно отметить чекбокс рядом с надписью
Подпункты\Subcommands. Будет разблокировано поле ввода для названия подпункта меню. Следует помнить, что сначала необходимо
создать основной пункт и только затем - подпункты. Пошагово это выглядит так:
1) Название раздела реестра - любое английское либо русское имя, желательно ассоциирующееся с будущим пунктом меню.
2) Название пункта - его имя, которое будет отображаться в самом меню.
3) Иконка пункта - заполняем по желанию.
4) Позиция пункта - выбираем по желанию (Top\Вверху, Middle\В середине, Bottom\Внизу) или оставляем поле пустым.
5) Нажимаем кнопку 'применить изменения', подтверждаем свои действия на выданный запрос.
В меню объекта появляется пустой и пока нерабочий основной пункт.

Как видим, действия все те же самые, что и при создании обычного (не каскадного) меню, за исключеним отсутствия необходимости
ввода данных в поле Команда. Оно здесь, как уже указывалось, не требуется и будет проигнорировано.
Далее шаг второй. Создаем попункты:
1) Выбираем созданный нами на предыдущем этапе пункт в левом списке (он должен появится в конце).
2) Вводим название подпункта в поле Подпункты\Subcommands. (Поле ввода Названия раздела реестра будет уже заполнено).
3) Вводим название пункта - обязательно, иначе пункт будет нерабочим. Впрочем, программа вам напомнит, если оставите поле пустым.
4) Выбираем иконку пункта - если нужно.
5) Позиция пункта - оставляем поле пустым. Похоже этот параметр все равно игнорируется системой для подпунктов каскадного меню.
6) Команда - заполняем обязательно (впрочем, вам об этом напомнят, если забудете).
7) Нажимаем кнопку 'применить изменения', подтверждаем свои действия на выданный запрос.
Можно открыть контекстное меню и полюбоваться на появившийся там новый пункт с подпунктом.
Действия по созданию следующего подпункта вашего каскадного меню полностью аналогичны вышеуказанным.

Примечание: если вы не последуете указанном порядку действий, а пойдете своим путем, решив сразу создать основной пункт и подпункт,
то ничего страшного не случится. Просто данные полей Название пункта, Команда и Иконка программа запишет как параметры именно подпункта.
Но вы всегда сможете добавить нужные параметры - иконку и отображаемое имя - для основного пункта просто выбрав его в левом списке и заполнив
соответствующие поля.

Быстрый способ: если вы уже создали основной пункт и хотите накидать в него команд из правого списка, выберите пункт слева,
а затем просто перетаскивайте команды из правого списка на любой элемент в центре. Если перетаскивание было удачным - все нужные поля
будут автоматически заполнены и останется только нажать кнопку 'применить изменения'!
Примечание: Drag-and-Drop срабатывает для всех элементов внутри элемента Group, за исключеним полей ввода ComboBox. Отпускание пункта над ними
почему то не обрабатывается - за исключением кнопок для раскрытия списка у самих Combo.

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


Как добавить разделитель для пунктов каскадного меню
=====================================================
Программа предусматривает и такую возможность. Но только для пунктов с подменю - иное не предусмотрено системой.
Справа от надписи Подпункты есть кнопочка с ножницами. Именно она и добавляет сепаратор для пунктов.
Логика добавления простая:
1) Выберите в левом списке пункт с выпадающим меню.
2) Убедитесь, что кнопка разблокировалась (иначе что то не так с вашим меню, либо пункт вообще не содержит подменю).
3) Выберите в выпадающем списке Подпункты нужный подпункт, после которого вы хотите добавить разделитель.
4) Нажмите на кнопку с ножницами. Подтвердите запрос.

Откройте ваше меню и проверьте появился ли там разделитель.
Примечание: если на первом шаге не выбрать ничего - разделитель будет добавлен после последнего подпункта.
Отображаться в меню он разумеется не будет, но предполагается, что вы собираетесь добавить следом еще один или несколько
подпунктов. Добавить разделитель после разделителя программа вам не даст, так как это бессмысленное действие.

PS: Думаю все понимают, что при работе с реестром будет не лишним иметь его копию :smile:
Впрочем, у меня программа ничего лишнего из реестра не удаляла.

Файл:
скачать

Снимок:



История версий:
История версий
===============

* Версия 1.0:
& Первая публичная версия.
* Версия 1.1:
& Исправлено несколько ошибок с массивами
& Исправлена ошибка с одинаковыми ключами массива команд
& Исправлена проблема с чтением 64-битных ключей реестра и запуска 64-битной версии regedit.exe
* Версия 1.2:
& Исправлена ошибка при добавлении своего пункта в пустой (не содержащий пунктов) объект
& Исправлено сворачивание главного окна во время удаления пунктов каскадного меню после закрытия MsgBox'а
& Исправлена неблокировка поля ввода подпунктов и кнопки 'разделитель' после удаления каскадного меню
* Версия 1.3:
& Исправлена некритичная ошибка добавления в список существующих команд названия подпункта вместо ключа
реестра основного пункта при одновременном создании основного пункта и подпункта
& Исправлена неустановка атрибутов Extended и Disabled для основных пунктов каскадного меню, также сделана
блокировка\разблокировка некоторых полей ввода и чекбоксов в зависимости от логики создания пунктов
& Добавлена возможность открывать в реестре ключи в CommandStore для подпунктов каскадного меню
& Добавлено отключение файлового редиректа для диалога выбора иконок (актуально для 64-битных систем):
теперь Диалог выбора иконок больше не ругается на отсутствие файла, если в системе нет его 32-битной копии
& Добавлены новые предопределенные команды (больше 20)

PS: Для команд Показать\Скрыть скрытые файлы и Показать\Скрыть системные файлы нужно скопировать файлы
showsuperhidden.js и showhidden.js в папку c:\windows

* Версия 1.4:
& Исправлены регулярные выражения в функциях удаления подпунктов каскадного меню, так как прежние давали
неверные результаты замены при удалении (в выборочном режиме) этих подпунктов, если ключ подпункта частично
совпадал с другим, либо если в меню присутствовали разделители
& Спискам добавлен стиль $LVS_EX_INFOTIP для отображения подсказок, если пункт виден не полностью

Источник: autoit-script.ru
Автор(ы): Erlik (Garry Galler)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
erlik
не работает кнопка "открыть в реестре". разные пункты перепробовал
клацнул на "все объекты NTFS" скрипт вывалился с ошибкой
Код:
---------------------------
AutoIt Error
---------------------------
Line 2983  (File "C:\Users\Brut\Desktop\ContextMenuManager\ContextMenuManager\ContextMenuManager.exe"):
Error: Array variable subscript badly formatted.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
не работает кнопка "открыть в реестре"
Исправил. По недосмотру поставил урезанную версию _RegJump - поэтому для 64-битных ключей она не работала.
Ошибку с массивом тож подправил - не было должной проверки на существующий, но пустой ключ. Исправленную версию перезалил. Можешь проверить.
PS: C 64-битной Windows всегда какой-нить недосмотр случается :smile: Спасибо за тест.
Tech
Я его планирую немного позже выложить.
Нужно еще дотестить, скрипт почистить и кое-какие мелочи еще возможно добавить - потом выложу.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
ссылка нерабочая
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Ссылку переобновил - нашел еще один недочет с массивом (благодаря твоему тесту и ошибке с AllFileSystemObjects) поэтому сейчас залил новую версию, обновив программу до 1.1.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
при клике на "открыть в реестре" открывается только редактор реестра. но, как я понял, должна открыться ветка со значением. этого не происходит


Добавлено:
Сообщение автоматически объединено:

если добавить "тест памяти" а потом пробовать добавить "управление дисками", то программа пишет, что "тест памяти " уже добавлен и спрашивает нужно ли перезаписать значение
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Да, должна открываться ветка, где находится пункт меню.
Я всегда использовал эту функцию для открытия реестра. Но на 64-битных Windows даже не помню - тестил ее или нет. Как тут быть - непонятно...
Код:
Func _RegJump($sKey)

	Local $Root, $Text = StringSplit($sKey, '\', 2)

	If IsArray($Text) Then
		$Text = $Text[0]
	Else
		$Text = $sKey
	EndIf
	Switch $Text
		Case 'HKEY_CLASSES_ROOT', 'HKEY_CURRENT_USER', 'HKEY_LOCAL_MACHINE', 'HKEY_USERS', 'HKEY_CURRENT_CONFIG'
			$Root = $Text
		Case 'HKCR'
			$Root = 'HKEY_CLASSES_ROOT'
		Case 'HKCU'
			$Root = 'HKEY_CURRENT_USER'
		Case 'HKLM'
			$Root = 'HKEY_LOCAL_MACHINE'
		Case 'HKU'
			$Root = 'HKEY_USERS'
		Case 'HKCC'
			$Root = 'HKEY_CURRENT_CONFIG'
		Case 'HKCR64'
			$Root = 'HKEY_CLASSES_ROOT64'
		Case 'HKCU64'
			$Root = 'HKEY_CURRENT_USER64'
		Case 'HKLM64'
			$Root = 'HKEY_LOCAL_MACHINE64'
		Case 'HKU64'
			$Root = 'HKEY_USERS64'
		Case 'HKCC64'
			$Root = 'HKEY_CURRENT_CONFIG64'

		Case Else
			Return 0
	EndSwitch

	Local $Class = '[CLASS:RegEdit_RegEdit]', $Delay = Opt('WinWaitDelay', 0)
	Local $Prev, $Result = 1

	If WinExists($Class) Then
		WinClose($Class)
		If Not WinWaitClose($Class, '', 5) Then
			$Result = 0
		EndIf
	EndIf
	If $Result Then
		$Prev = RegRead('HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit', 'Lastkey')
		If @error Then
			$Prev = 0
		EndIf
		If Not RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit', 'Lastkey', 'REG_SZ', StringReplace($sKey, $Text, $Root, 1)) Then
			$Result = 0
		Else
			If Not Run('regedit.exe') Then
				$Result = 0
				If IsString($Prev) Then
					RegWrite('HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit', 'Lastkey', 'REG_SZ', $Prev)
				EndIf
			EndIf
		EndIf
	EndIf
	Opt('WinWaitDelay', $Delay)
	Return $Result
EndFunc ;==>_RegJump
----------------------------------------------
По второму вопросу - сейчас буду разбираться, что там за глюк.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
добавил "учетные записи и пароли" потом удалил. потом опять добавляю пишет что уже такая запись есть. а она и правда есть в контекстном меню "мой компьютер". но уже в программе не отображается. пробую добавить . программа спрашивает перезапись. я соглашаюсь. потом жму кнопку "применить изменения". программа спрашивает опять разрешение на перезапись. соглашаюсь и скрипт вываливается с ошибкой

Код:
Line 3378  (File "C:\Users\Brut\Desktop\ContextMenuManager\ContextMenuManager\ContextMenuManager.exe"):
Error: Array variable subscript badly formatted.




Добавлено:
Сообщение автоматически объединено:

делай две версии для 32-битных систем и 64-битных. и забудь ты про этот редирект
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
По Memtest'у разобрался - у меня в таблице готовых команд два одинаковых ключа было - то есть Управление дисками тоже было под ключ Memtest записано. Остальные глюки похоже отсюда потянулись. Сейчас исправим.
Две версии тогда скомпилирую - 32 и 64 бит.


Добавлено:
Сообщение автоматически объединено:

Перезалил - ссылка та же. В архиве две версии - не уверен насчет одного нюанса, но в общем проверь 64-битную версию.
----------------------------------------------------------
Вот это оставлять в 64-битной версии или нет?
Код:
If @OSArch <> "X86" Then
    $HKLM = "HKLM64"
	$HKCU = "HKCU64"
	$HKU  = "HKU64"
	$HKCR = "HKCR64"
	$HKCC = "HKCC64"
EndIf
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
опять же открывает только редактор реестра. и больше ничего.
так как у меня уже было в конменю моего компьютера добавлено "учетки и пароли", но программа не увидела этого. хотя добавлял предыдущей версией..добавил опять. согласился на перезапись. пробовал удалить. в окне программы запись удалилась, но в конменю моего компа она осталась рабочей..возможно нужна перезагрузка. пока проверить не могу

хотя.. удаление все же сработало
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Тут видимо разнобой идет с веткми реестра 32 и 64 битными.
Вот этот код получается нужно удалять из 64-битной версии программы - чтобы она работала с правильными ключами.
Код:
If @OSArch <> "X86" Then
    $HKLM = "HKLM64"
    $HKCU = "HKCU64"
    $HKU  = "HKU64"
    $HKCR = "HKCR64"
    $HKCC = "HKCC64"
EndIf

И в функции RegJump тоже тогда удалять  замену на эти ключи. Или не нужно... чего то не пойму...


Я вот с этими нюансами как то не очень лажу :smile:
---------------------------------------------------
Как правильно то поступить? Кто подскажет?
-------------------------------------------------
В общем для работы с 64-битной Windows пока буду думать как исправить программу. Жаль, потестить негде.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
твоя функция работает нормально и в 64-битном выполнении. показывает заданную ветку..а вот почему в программе не срабатывает, разбираться тебе
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
_RegJump это так то Yashied' а функция :smile:
В общем чтобы не было разнобоя с чтением ключей у 64-битной версии программы убрал из кода скрипта проверку на разрядность и замену ключей на "HKLM64" , "HKCR64" и т.д
В архиве заменил 64-битную версию.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
теперь работает
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
joiner
Спасибо. :smile:
Непонятно только почему в 32-битной версии проблемы с чтением 64-битных ключей. Они ведь в скрипте заменялись на варианты с суффиксом 64...
Может в этой функции из WinAPIex.au3
Код:
_WinAPI_RegOpenKey($HKEY_CLASSES_ROOT, $sSubKey, $KEY_READ)
, которая у меня считывает (точнее открывает, а перечисляет уже _WinAPI_RegEnumKey) разделы и все их данные в таблицу, нужно указывать флаг другой: $KEY_WOW64_64KEY или $KEY_WOW64_32KEY. ?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
erlik, у меня была такая же проблема. когда писал программу http://autoit-script.ru/index.php/topic,11757.0.html
поэтому плюнул на эти бубновые танцы и сделал две версии
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
erlik [?]
Я его планирую немного позже выложить.
Если планируется показать исходник, то не лучше ли сразу, чтобы можно было найти ошибки в коде, а не запортачиванием реестра и отписками об этом.

Как вам _JumpRegistry? Отличие в том что не надо перезапускать regedit.exe
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
Чтение исходника делу не поможет. Никто ведь так и не пояснил как правильно 32-битному приложению требуется считывать разделы в 64-битной Windows для HKCR. А это главный камень преткновения.
...Но я уже на верном пути - поставил 64-битную Windows 8.1 и увидел, все что скрыто :smile: Теперь кое-что стало более понятным.
Осталось только добиться, чтобы 32-битное приложение открывало реестр в нужной ветке. Ссылку пока 'заморозил'.
Как вам _JumpRegistry? Отличие в том что не надо перезапускать regedit.exe
Уже есть такой вариант - не знаю уж, кто автор - нашел на страницах форума. Подправил - буду использовать его вместо LastKey' оного варианта.


Добавлено:
Сообщение автоматически объединено:

Проблема с 64-битным окружением решена.
Скомпилирована 32-битная (и единственная) версия программы. Номер версии остался прежним -1.1.
Решено:
1) чтение 64-битных ключей - теперь на 64 -битной Windows программа отображает все пункты (изначально отображались в программе только 32-битные ключи).
Метод: в 64-битном окружении функции _WinAPI_RegOpenKey передается дополнительный флаг WOW64_64KEY, который отключает редирект на 32-битный реестр дает доступ к 64-битному представлению реестра.
2) Проблема с запуском regedit: исправлена функция _RegJump (переданные ей ключи с суффиксами 64 конвертируются в обычные), также 64-битном окружении программа запускает 64-битный regedit.exe - теперь открываются для просмотра все ключи.
Метод: В функцию _RegJump добавлено отключение файлового редиректа.
_RegJump оставлен в варианте записи последнего ключа, так как вариант с ControlTreeView не поддерживает отключение редиректа - запустить 64-битный редактор можно, но так как у 32-разрядного приложения нет доступа к 64-разрядному - сообщения не передаются.
ЗЫ: Запуск именно 64-битной версии regedit нужен потому, что в 32-разрядном отображаются не все разделы.
ЗЫЫ: Ссылка обновлена. Добавлен исходник.
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Win7x64, при попытке выбрать пункты Файлы библиотек и Все объекты NTFS вылетают ошибки:
Не удалось открыть раздел или ключ реестра HKCR64\dllfile\shell.
Причина: Не удается найти указанный файл.
и
Не удалось открыть раздел или ключ реестра HKCR64\AllFilesystemObjects\shell
Причина: Не удается найти указанный файл.
 
Верх