Автор: popkov
Дата сообщения: 11.05.2008 15:25
Обычно такая проблема возникает, если это неправильная ссылка на файл в локальной сети или ftp-ресурсе. Лечится отключением DDE для таких ярлыков:
[more=REG-файл]
Windows Registry Editor Version 5.00
;"URL:Протокол FTP" - теперь при запуске таких ярлыков соответствующее окно Проводника не будет зависать вследствие начала беспонтового DDE между запускаемым процессом IE и процессом Проводника! Кроме того, при зависании FTP-сессии зависнет только окно с этой сессией, а не все окна, поскольку она будет запускаться в отдельном процессе, а не как один из потоков уже существующего процесса IE, в других потоках которого могут быть открытые вэб-страницы (последние зависнут, если зависнет окно с FTP-сессией). Однако при включённой опции "Проверять, является ли Internet Explorer используемым по умолчанию обозревателем" на вкладке "Программы" в "Свойствах обозревателя", после отключения DDE для "URL:Протокол FTP", он начинает выдавать сообщение, что не является используемым по умолчанию обозревателем. Если ответить "Да" на вопрос "Использовать его в качестве обозревателя по умолчанию?", он восстановит DDE, но при этом сбросит иконку для таких ярлыков на обычную иконку ярлыков Интернета. Поэтому эту опцию также надо отключить, что и делается ниже (заодно это ускоряет процесс загрузки Internet Explorer):
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Check_Associations"="no"
[HKEY_CLASSES_ROOT\ftp]
@="URL:Протокол FTP"
[HKEY_CLASSES_ROOT\ftp\DefaultIcon]
@="%SystemRoot%\\system32\\msieftp.dll,0"
[-HKEY_CLASSES_ROOT\ftp\shell\open\ddeexec]
[HKEY_CLASSES_ROOT\ftp\shell\open\command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -new -nohome %1"
;Кроме того, имеет смысл также отключить DDE и при открытии ярлыков Интернета ("URL:Протокол HTTP" и "URL:Протокол HTTPS") и "URL:File Protocol" (последний я пока не трогаю; он не относится к файловым ассоциациям Internet Explorer, и не проверяется при старте с флагом "Проверять, является ли Internet Explorer используемым по умолчанию обозревателем" на вкладке "Программы" в "Свойствах обозревателя").
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\ddeexec]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\https\shell\open\ddeexec]
;Далее я поставил создание нового процесса IE для открытия каждого ярлыка Интернета. Это несколько может замедлить их открытие (но использование DDE до этого замедляло открытие ярлыков намного сильнее, так что вы всё равно в выигрыше). Это необязательно, но несколько повышает надёжность работы Internet Explorer, особенно если открыто много окон. Одновременная работа большого числа окон IE не только повышает вероятность зависаний и глюков, но также делает эти глюки более болезненными, т.к., если все эти окна относятся к одному процессу IE, принудительное закрытие любого из них приводит к закрытию также и всех остальных окон. Открыти каждого нового окна в новом процессе резко повышает надёжность работы в такой ситуации, поскольку принудительное завершение приводит к закрытию только тех окон, которые принадлежат данному процессу.
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -new -nohome %1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\https\shell\open\command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -new -nohome %1"
[/more]