Показать полную графическую версию : Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.)
Страниц :
1
2
[
3]
4
5
6
7
8
morkva, Вариант хороший. Оформи это дело в тег ....
P.S. У меня только всё равно, нужно ПКМ - Обновить, хоть с примером выше, хоть со своим, хоть с - Context Menu Tweaker (Hidden Files Toggle/File Extensions (http://forums.techguy.org/tech-tips-tricks/565428-quick-access-hidden-files-file.html). У всех происходит обновление окна автоматически?
Всем добрый день.
Изучив мат. часть обновил скрипт.
Теперь пункт контекстного меню меняется автоматически, в зависимости от значения реестра ShowSuperHidden (см. скрипт и прилагаемые скрины).
Проверена работоспособность скрипта на Windows 2008 Server SP1/Vista Ultimate SP1.
Обновление содержимого папки происходит автоматически (с рабочим столом - не всегда)
Файл SuperHidden.vbs
'Show/Hide System Files by Herby, edited by Morkva
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
sTitle1 = "SSH=0"
sTitle2 = "SSH=1"
if WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden") = 1 then
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "0", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\", "Отображать скрытые", "REG_SZ"
WSHShell.SendKeys "{F5}"
else
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\", "Не отображать скрытые", "REG_SZ"
WSHShell.SendKeys "{F5}"
end if
Set WSHShell = Nothing
WScript.Quit(0)
Файл Add SuperHidden.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\SuperHidden]
@="Отображать скрытые"
[HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\command]
@="WScript.exe C:\\Windows\\System32\\SuperHidden.vbs"
Файл Remove SuperHidden.reg
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\Directory\shell\SuperHidden]
morkva, а этот пункт никак нельзя перенести на рабочий стол или vbs в этом безсилен?
R.M.L. можно. VBS вообще может все (http://www.kodges.ru/7327-windows-script-host-dlja-windows-2000xp.html) :)
Универсальная версия для внесения пункта "Отображать скрытые/Не отображать скрытые" в контекстное меню Папки и Рабочего стола
В данной реализации под "скрытыми" понимаются также все файлы имеющие атрибуты "системный"!
Запись значения "Отображать/не отображать..." теперь идет параллельно в две ветки реестра:
HKEY_CLASSES_ROOT\Directory\shell\SuperHidden - для меню папки
HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden - для меню рабочего стола
Файл Add SuperHidden.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden]
@="Отображать скрытые"
[HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden\command]
@="WScript.exe C:\\Windows\\System32\\SuperHidden.vbs"
[HKEY_CLASSES_ROOT\Directory\shell\SuperHidden]
@="Отображать скрытые"
[HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\command]
@="WScript.exe C:\\Windows\\System32\\SuperHidden.vbs"
Файл Remove SuperHidden.reg
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\Directory\shell\SuperHidden]
[-HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden]
Файл SuperHidden.vbs (копировать в Windows/System32)
'Show/Hide System Files by Herby, hard edited by Morkva
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
sTitle1 = "SSH=0"
sTitle2 = "SSH=1"
if WSHShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden") = 1 then
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "0", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\", "Отображать скрытые", "REG_SZ"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden\", "Отображать скрытые", "REG_SZ"
WSHShell.SendKeys "{F5}"
else
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\shell\SuperHidden\", "Не отображать скрытые", "REG_SZ"
WSHShell.RegWrite "HKEY_CLASSES_ROOT\Directory\Background\shell\SuperHidden\", "Не отображать скрытые", "REG_SZ"
WSHShell.SendKeys "{F5}"
end if
Set WSHShell = Nothing
WScript.Quit(0)
У меня все работает, включая автоматическое обновление... Сервер рулит )))
morkva, отлично :up: У меня все работает, включая автоматическое обновление... »Видимо у меня автообновление не работает вовсе, причём не только с этим скриптом.
Drongo
Автор скрипта (Herby) выложил вариант, написанный на AutoHotkey, и скомпилированный в exe-файл.
Есть минус - он проще и не меняет значения "Отображать/Не отображать". Иностранцы вообще странные - делают большое дело, но не могут реализовать так нужных порой мелочей...
Но, возможно, будет работать у тебя...
Обновление окна вообще работает за счет посыла кода клавиши "F5" в скрипте, не знаю как это может не работать...
См. архив.
Нужно скопировать SuperHidden.exe в папку Windows/ и применить
Drongo
Предлагаю привести название темы в соответствие с содержанием, например:
Пункты "Отображать расширения", "Отобр./Не отобр. скрытые файлы" в контекстном меню проводника"
Возможно это пригодится кому-нибудь еще...
Но, возможно, будет работать у тебя... »Да у меня все и так работают.Обновление окна вообще работает за счет посыла кода клавиши "F5" в скрипте, не знаю как это может не работать... »Знать бы самому, почему не пашет? :dont-know
Предлагаю привести название темы в соответствие с содержанием, например:
Пункты "Отображать расширения", "Отобр./Не отобр. скрытые файлы" в контекстном меню проводника" »Это не ко мне, а модераторам этого раздела Jekson07 (http://www.forum.oszone.net/member.php?u=55753) или prokazzza (http://www.forum.oszone.net/member.php?u=47933). А назвать можно - "Добавление пользовательских пунктов в контекстное меню файлов\папок\объектов"
Jekson07
30-03-2009, 19:07
Предлагаю привести название темы в соответствие с содержаниемСделано. :) Название темы: "Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.)"
Jekson07, ну да,поторопившись заполучить нужный мне ответ,не подумал даж о поисковиках.Ведь не один я с этим сталкиваюсь.Мож кому то еще пригодиться эта тема.Спасибо
Видимо у меня автообновление не работает вовсе, причём не только с этим скриптом. »
Вот почему ты так мучал нас все эти дни ))
hobbit25
01-04-2009, 01:26
morkva, а с файлами Add SuperHidden.reg и Remove SuperHidden.reg что делать ну всмысле запускать или куда то просто положить
VBS вообще может все »
Точно,но не все могут реализовать все ее возможности,спасибо тебе )
В данной реализации под "скрытыми" понимаются также все файлы имеющие атрибуты "системный"! »
Это меня больше всего интересовало!
Спасибо большоеmorkva, родина тебя не забудет ))
Если еще найдешь время,можешь сделать такой же аналогичный скрипт для Создание файлов (.ini,.reg,.bat,.vbs,.html,.hta,.pas и тд).Я знаю их сперва кинуть в newshell ну и потом прописать через HK_classes_root в самих расщирениях файла.Делаю как есть,у меня все пашет но как переношу их в виртуалку ничего не происходит.На других машинах не пробовал.Устанавливаю через svcpack
файл здесь если сможешь посмотри пожалуйста что я непрвильно делаю.
спасибо
hobbit25, Код ставим в текстовик,изменяем на расширение .vbs и кидаем в папку system32.
Add SuperHidden.reg просто запускаем.
Или все это автоматизируем RAR или 7zip SFX методом копировая файлы в нужные папки и запуск REG файла тихим ключом "REGEDIT /S Add SuperHidden.reg".
Файл Remove SuperHidden.reg это на всякий случай,если вы передумаете чтобы вернуть исходное значение в меню.
hobbit25
01-04-2009, 02:09
R.M.L, спасибо за разяснение!!
R.M.L
Не понял зачем тут применять VBS, достаточно простого reg файла и запуск REG файла тихим ключом "REGEDIT /S Add NewExt.reg".
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.html\ShellNew]
"FileName"="C:\\WINDOWS\\\SHELLNEW\\Default.html"
[HKEY_CLASSES_ROOT\.hta\ShellNew]
"FileName"="C:\\WINDOWS\\\SHELLNEW\\Default.hta"
[HKEY_CLASSES_ROOT\.bat\ShellNew]
"FileName"="C:\\WINDOWS\\\SHELLNEW\\Command.bat"
[HKEY_CLASSES_ROOT\.reg\ShellNew]
"FileName"="C:\\WINDOWS\\\SHELLNEW\\Default.reg"
[HKEY_CLASSES_ROOT\.vbs\ShellNew]
"FileName"="C:\\WINDOWS\\\SHELLNEW\\Script.vbs"
И вообще - совсем не обязательно создавать шаблон файла, но тогда вместо параметра FileName надо создать пустой строковый параметр NullFile.
В твоем архиве есть файл Shell.exe - это не что иное как скомпилированный скрипт AutoIt (чем бы вскрыть?).
Суть работы инсталлятора, как я понял, в копировании всего добра в папку \Windows\SHELLNEW.
Затем - запуск Shell.exe (предполагаю что он должен создать подразделы "ShellNew" в реестре в "HKEY_CLASSES_ROOT/.*", где [.*] - соотв. расширения файлов и указать пути к болванкам файлов в параметре "FileName", чего он не делает для расширений .reg, .bat, .vbs.
Вывод - скрипт странный, однако...
Тут (http://www.whatis.ru/reg/reg_n13.shtml) можно почитать о ручном методе добавления пунктов в меню Создать.
Прошелся поиском по форуму - данная тема обсуждалась не менее 5 раз... :)
Вывод - скрипт странный, однако... »
Скрипт аналогичен вашему
RegWrite ("HKEY_CLASSES_ROOT\.html\ShellNew","FileName","REG_SZ","C:\WINDOWS\SHELLNEW\Default.html")
RegWrite ("HKEY_CLASSES_ROOT\.hta\ShellNew","FileName","REG_SZ","C:\WINDOWS\SHELLNEW\Default.hta")
RegWrite ("HKEY_CLASSES_ROOT\.bat\ShellNew","FileName","REG_SZ","C:\WINDOWS\SHELLNEW\Command.bat")
RegWrite ("HKEY_CLASSES_ROOT\.vbs\ShellNew","FileName","REG_SZ","C:\WINDOWS\SHELLNEW\Script.vbs")
RegWrite ("HKEY_CLASSES_ROOT\.reg\ShellNew","FileName","REG_SZ","C:\WINDOWS\SHELLNEW\Default.reg")
но никак не срабатывает на других машинах.
Спасибо
Алексей Н.
06-04-2009, 18:49
это не что иное как скомпилированный скрипт AutoIt (чем бы вскрыть?) »
Дык это просто.
Хотя бы здесь: http://leechermods.blogspot.com/2008/02/autoit-decompiler-unpacker-and-script.html
Space-06
14-04-2009, 21:38
Ребята - а можно ли с помощью данной фичи добавить пункт - добавить "Отправить по сети для ..."
а вот для кого написать батники ( с этим проблем у меня нет) - такое вообще реально ли...
к примеру встаем на файл(ы) жмем ПКМ и выбираем отправить по сети для - > Пользователь 1
Space-06, Не плохая мысль и мне думаю это понадобиться.И еще сделать например подключить и отключить сетевое подключение и т.д.
Space-06
15-04-2009, 08:42
дошел до того что можно добавить запись "Отправить по локальной сети" [HKEY_CLASSES_ROOT\*\Shell\Отправить по локальной сети]
а как бы теперь сделать - чтоб этот список стал выпадающим и к нему прикрутить заветные батники...
пока на этом остановился...
если есть идеи как сделать его выпадающим - то общими усилиями думаю доделаем...
Space-06
16-04-2009, 07:38
в принципе удалось выяснить тока вот что:
"... Когда пользователь щелкает правой кнопкой мыши на любом объекте в пространстве имен, система создает контекстное меню из двух частей: стандартного меню для объектов данного типа и пунктов меню, добавляемых зарегистрированными обработчиками. Зарегистрированные обработчики — это СОМ-серверы, запускаемые в адресном пространстве процесса (in-process servers) и реализованные в виде динамических библиотек. ..."
Я мог бы создать оболочу для всего этого добра про которое вы тут говорите...
То что для контекстного меню.. Я для Distr tools делал контектное меню..
Там принцип такой то регистрируется DLL. »
Все только так и резрешится может
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC