Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   [решено] Непонятки с контекстным меню "Мой компьютер" (http://forum.oszone.net/showthread.php?t=91073)

andrystepa 28-09-2007 12:37 650987

Непонятки с контекстным меню "Мой компьютер"
 
Винду ставил с самопального дистрибутива. Правил дистрибутив с помощью 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 651072

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 651537

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

Petya V4sechkin 29-09-2007 16:39 651541

Цитата:

Цитата andrystepa
В чем отличие то?

Отличие в версии MMC, 3.0 с параметром REG_SZ не работает.

andrystepa 22-06-2008 15:53 832327

Цитата:

Цитата Petya V4sechkin
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 832345

Цитата:

Цитата andrystepa
Этот код не сработал.

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

andrystepa 22-06-2008 23:46 832612

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

Котяра 23-06-2008 00:26 832628

Цитата:

Цитата andrystepa
mmc.exe %%systemroot%%\\SYSTEM32\\devmgmt.msc »

Да, нужно дублировать проценты и слэши вроде тоже.

Petya V4sechkin 23-06-2008 09:48 832755

Цитата:

Цитата andrystepa
А как строка он в редакторе реестра выглядел в виде строки квадратиков!! - может в этом дело?)

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

Есть два формата (версии) reg-файлов, прочитайте статью:
Как создавать, изменять или удалять подразделы и значения системного реестра с помощью файла записей регистрации (.reg)
В 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 1093423

У меня возникла странная вариация на эту тему.

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

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

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

Petya V4sechkin 14-04-2009 11:30 1093609

Miroslaw, попробуйте Пуск -> Выполнить ->
Код:

regsvr32 devmgr.dll

Miroslaw 14-04-2009 21:23 1094119

Petya V4sechkin

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

Цитата Petya V4sechkin
Код:
regsvr32 devmgr.dll »

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

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

Petya V4sechkin 14-04-2009 22:35 1094207

Miroslaw, давайте с помощью FileMon + RegMon посмотрим, чего не хватает.

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

Miroslaw 15-04-2009 03:26 1094385

Вложений: 2
Petya V4sechkin, проделал все согласно инструкции и получил два файла:
Filemon_log1.zip
Regmon_log1.zip

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

R.M.L 15-04-2009 05:39 1094404

а как добавить приложение если это в другом диске ? например в D/

Petya V4sechkin 15-04-2009 09:19 1094475

Miroslaw, честно говоря, конкретной причины в логах не видно.
Единственное: в момент сбоя шло обращение к ZoneAlarm.


Время: 09:38.

Время: 09:38.
© OSzone.net 2001-