Войти

Показать полную графическую версию : [решено] Непонятки с контекстным меню "Мой компьютер"


andrystepa
28-09-2007, 12:37
Винду ставил с самопального дистрибутива. Правил дистрибутив с помощью nlite. Там есть возможность добавить в контекстное меню "Мой компьютер" дополнительные пункты. Добавил диспетчер устройств и просмотр служб. После установки ни тот ни другой пункты не срабатывали: На диспетчер устройств получал ответ:" MMC не может открыть файл %systemroot%\SYSTEM32\devmgmt.msc
Возможно файл отсутствует или не является консолью ММС. Возможно нет прав доступа .... и т.д."
А на запуск просмотра служб получал сообщение: "Нет прав".
В Тотал командере запускалось и то и другое. Нашел в реестре команды запуска этих пунктов контекстного меню и изменил так же, как сделано в Тотал командере. Запуск диспетчера устройств такой:
mmc.exe %windir%\SYSTEM32\devmgmt.msc
А запуск просмотровщика служб такой:
mmc.exe %windir%\SYSTEM32\services.msc
(собственно запуск диспетчера устройств менять не пришлось - именно такая команда там и была).
Результат: Просмотровщик служб запускается без проблем. Диспетчер устройств не запускается, выдавая приведенное выше сообщение! Но почему?! Ведь команды то практически идентичные! Да и в командной строке приведенная команда запуска диспетчера устройств срабатывает без проблем! Почему же она не работает из контекстного меню? Кто знает, объясните пожалуйста!

Petya V4sechkin
28-09-2007, 15:06
andrystepa, тип параметра должен быть REG_EXPAND_SZ (или указывать полный путь C:\WINDOWS\system32\devmgmt.msc).
Такой твик работает:
REGEDIT4

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt]
@="Диспетчер устройств"
"SuppressionPolicy"=dword:4000003c

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt\command]
@=hex(2):25,77,69,6e,64,69,72,25,5c,73,79,73,74,65,6d,33,32,5c,6d,6d,63,2e,65,\
78,65,20,2f,73,20,25,77,69,6e,64,69,72,25,5c,73,79,73,74,65,6d,33,32,5c,64,\
65,76,6d,67,6d,74,2e,6d,73,63,00

Раздел LDevMgmt назвал так только для того, чтобы соответствующий пункт контекстного меню был непосредственно над Управлением (между find и Manage). В меню сортировка по имени раздела (если назвать NDevMgmt, будет под Управлением).

andrystepa
29-09-2007, 16:30
Но на моем домашнем компьютере тип параметра - REG_SZ, а строка параметра:
mmc.exe %%systemroot%%\SYSTEM32\devmgmt.msc
то есть практически то же самое, и никаких проблем - диспетчер устройств запускается.
В чем отличие то?

Petya V4sechkin
29-09-2007, 16:39
В чем отличие то?
Отличие в версии MMC, 3.0 с параметром REG_SZ не работает.

andrystepa
22-06-2008, 15:53
REGEDIT4
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt]
@="Диспетчер устройств"
"SuppressionPolicy"=dword:4000003c
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt\command]
@=hex(2):25,77,69,6e,64,69,72,25,5c,73,79,73,74,65,6d,33,32,5c,6d,6d,63,2e,65,\
78,65,20,2f,73,20,25,77,69,6e,64,69,72,25,5c,73,79,73,74,65,6d,33,32,5c,64,\
65,76,6d,67,6d,74,2e,6d,73,63,00 »
Этот код не сработал. После его добавления открыл контекстное меню для "Мой компьютер" и выбрал диспетчер задач. Выскочил диалог выбора приложения для файла - мол этому файлу не сопоставлено ни одно приложение.
Полез в реестр. Изменил параметр REG_EXPAND_SZ в shell\LDevMgmt на mmc.exe %%systemroot%%\\SYSTEM32\\devmgmt.msc и все стало нормально работать. После этого я экспортировал эту ветку реестра и вот что получилось:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt] @="Диспетчер устройств"
"SuppressionPolicy"=dword:4000003c
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,
20,00,25,00,25,00,73,00,79, 00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,
00,25,00,25,00,5c,00,5c,00, 53,00,59,00,53,00,54,00,45,00,4d,00,33,
00,32,00,5c,00,5c,00,64,00,65,00,76, 00,6d,00,67,00,6d,00,74,00,2e,00,6d,
00,73,00,63,00,00,00

Различие только одно - каждое значение расширено нулями до 32 бит, т. е. все значения стали 32 битными. Не знаю смысла этого изменения. Может кто объяснит?

Petya V4sechkin
22-06-2008, 16:29
Этот код не сработал.
Батенька, это просто фантастика!
Сделано по аналогии с уже существующим стандартным разделом HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage

andrystepa
22-06-2008, 23:46
Тем не менее факт. Я просто скопировал вышеприведенный код и сделал из него файл .reg. Результат я уже описал. Потом просто в редакторе реестра изменил параметр REG_EXPAND_SZ (к слову сказать, изменял я его как строку, а не как двоичный. А как строка он в редакторе реестра выглядел в виде строки квадратиков!! - может в этом дело?) на такую:
mmc.exe %%systemroot%%\\SYSTEM32\\devmgmt.msc
После этого ссылка нормально заработала. В том же редакторе реестра я экспортировал ветку LDevMgmt и привел ее - как видно, различие налицо!

Котяра
23-06-2008, 00:26
mmc.exe %%systemroot%%\\SYSTEM32\\devmgmt.msc »
Да, нужно дублировать проценты и слэши вроде тоже.

Petya V4sechkin
23-06-2008, 09:48
А как строка он в редакторе реестра выглядел в виде строки квадратиков!! - может в этом дело?)
Конечно, в этом дело.
Вы неправильно сохранили reg-файл. Во втором посту первая строчка REGEDIT4. Возможно, вы подумали: "Что это за непонятный REGEDIT4, заменю-ка я его на Windows Registry Editor Version 5.00". И в результате получили крякозябры.

Есть два формата (версии) reg-файлов, прочитайте статью:
Как создавать, изменять или удалять подразделы и значения системного реестра с помощью файла записей регистрации (.reg) (http://support.microsoft.com/kb/310516/ru)
В 4-й и 5-й версиях типы REG_EXPAND_SZ, REG_MULTI_SZ хранятся по-разному.

Вот другой вариант (с идентичным результатом), здесь уже первая строчка Windows Registry Editor Version 5.00:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt]
@="Диспетчер устройств"
"SuppressionPolicy"=dword:4000003c

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\LDevMgmt\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,73,00,20,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,65,00,\
76,00,6d,00,67,00,6d,00,74,00,2e,00,6d,00,73,00,63,00,00,00

Miroslaw
14-04-2009, 06:45
У меня возникла странная вариация на эту тему.

Из контекстного меню "Мой компьютер" пункт меню "Диспетчер устройств" срабатывает правильно.
Но если зайти в "Свойства системы" на вкладку "Оборудование" и попытаться запустить "Диспетчер устройств",
то выскакивает сообщение от ММС : "Отказано в доступе к указанному устройству, пути или файлу. Возможно у Вас нет нужных прав доступа к этому объекту".

Система WinXP SP3 Rus, права Администратора.

Почему это так происходит?

Petya V4sechkin
14-04-2009, 11:30
Miroslaw, попробуйте Пуск -> Выполнить ->
regsvr32 devmgr.dll

Miroslaw
14-04-2009, 21:23
Petya V4sechkin

Зарегистрировал devmgr.dll

Код:
regsvr32 devmgr.dll »

К большому сожалению результата нет...

А интересно где в реестре находятся настройки вкладки "Оборудование", которая расположена в "Свойства системы"?

Petya V4sechkin
14-04-2009, 22:35
Miroslaw, давайте с помощью FileMon (http://technet.microsoft.com/ru-ru/sysinternals/bb896642.aspx) + RegMon (http://technet.microsoft.com/ru-ru/sysinternals/bb896652.aspx) посмотрим, чего не хватает.

Запускаете FileMon -> меню Options -> Filter/Highlight -> снимаете галку Log Successes. Далее нажимаете кнопку Оборудование (в свойствах системы) и смотрите в FileMon, на чем обламывается. Та же процедура в RegMon.
Можете выложить логи (меню File -> Save As).

Miroslaw
15-04-2009, 03:26
Petya V4sechkin, проделал все согласно инструкции и получил два файла:
Filemon_log1.zip
Regmon_log1.zip

Правда я впервые пользуюсь этими программами, поэтому внутри попало много мусора...

R.M.L
15-04-2009, 05:39
а как добавить приложение если это в другом диске ? например в D/

Petya V4sechkin
15-04-2009, 09:19
Miroslaw, честно говоря, конкретной причины в логах не видно.
Единственное: в момент сбоя шло обращение к ZoneAlarm.




© OSzone.net 2001-2012