PDA

Показать полную графическую версию : Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.)


Страниц : 1 2 [3] 4 5 6 7 8

Drongo
28-03-2009, 23:53
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). У всех происходит обновление окна автоматически?

morkva
29-03-2009, 14:45
Всем добрый день.

Изучив мат. часть обновил скрипт.
Теперь пункт контекстного меню меняется автоматически, в зависимости от значения реестра 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]

R.M.L
30-03-2009, 02:18
morkva, а этот пункт никак нельзя перенести на рабочий стол или vbs в этом безсилен?

morkva
30-03-2009, 14:56
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)

У меня все работает, включая автоматическое обновление... Сервер рулит )))

Drongo
30-03-2009, 15:03
morkva, отлично :up: У меня все работает, включая автоматическое обновление... »Видимо у меня автообновление не работает вовсе, причём не только с этим скриптом.

morkva
30-03-2009, 15:43
Drongo
Автор скрипта (Herby) выложил вариант, написанный на AutoHotkey, и скомпилированный в exe-файл.
Есть минус - он проще и не меняет значения "Отображать/Не отображать". Иностранцы вообще странные - делают большое дело, но не могут реализовать так нужных порой мелочей...
Но, возможно, будет работать у тебя...
Обновление окна вообще работает за счет посыла кода клавиши "F5" в скрипте, не знаю как это может не работать...

См. архив.
Нужно скопировать SuperHidden.exe в папку Windows/ и применить

Drongo
Предлагаю привести название темы в соответствие с содержанием, например:
Пункты "Отображать расширения", "Отобр./Не отобр. скрытые файлы" в контекстном меню проводника"

Возможно это пригодится кому-нибудь еще...

Drongo
30-03-2009, 18:03
Но, возможно, будет работать у тебя... »Да у меня все и так работают.Обновление окна вообще работает за счет посыла кода клавиши "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
Предлагаю привести название темы в соответствие с содержаниемСделано. :) Название темы: "Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.)"

R.M.L
01-04-2009, 01:01
Jekson07, ну да,поторопившись заполучить нужный мне ответ,не подумал даж о поисковиках.Ведь не один я с этим сталкиваюсь.Мож кому то еще пригодиться эта тема.Спасибо

Видимо у меня автообновление не работает вовсе, причём не только с этим скриптом. »
Вот почему ты так мучал нас все эти дни ))

hobbit25
01-04-2009, 01:26
morkva, а с файлами Add SuperHidden.reg и Remove SuperHidden.reg что делать ну всмысле запускать или куда то просто положить

R.M.L
01-04-2009, 01:36
VBS вообще может все »
Точно,но не все могут реализовать все ее возможности,спасибо тебе )

В данной реализации под "скрытыми" понимаются также все файлы имеющие атрибуты "системный"! »
Это меня больше всего интересовало!

Спасибо большоеmorkva, родина тебя не забудет ))

Если еще найдешь время,можешь сделать такой же аналогичный скрипт для Создание файлов (.ini,.reg,.bat,.vbs,.html,.hta,.pas и тд).Я знаю их сперва кинуть в newshell ну и потом прописать через HK_classes_root в самих расщирениях файла.Делаю как есть,у меня все пашет но как переношу их в виртуалку ничего не происходит.На других машинах не пробовал.Устанавливаю через svcpack
файл здесь если сможешь посмотри пожалуйста что я непрвильно делаю.
спасибо

R.M.L
01-04-2009, 01:54
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, спасибо за разяснение!!

morkva
01-04-2009, 17:58
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 раз... :)

R.M.L
06-04-2009, 01:13
Вывод - скрипт странный, однако... »

Скрипт аналогичен вашему

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

R.M.L
15-04-2009, 00:16
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