Я наконец сдался и решил обновить XP до SP3. Одна из вещей, которая беспокоит меня о SP2+ и которая заставила меня так долго откладывать его, заключается в том, что он требует полностью определенных путей для типов файлов и глаголов Explorer.
Например, в SP1 вы можете сделать что-то вроде следующего:
REGEDIT4
[HKCR\txtfile\shell]
"@"="Notepad2"
[HKCR\txtfile\shell\Notepad2]
"@"="notepad2.exe %1"
Предполагая, что notepad2.exe
находится в пути, вы можете открыть текстовый файл, запустив его напрямую или выбрав Notepad2 из его контекстного меню.
В SP2+ это не будет работать и вместо этого откроется диалоговое окно « Открыть с помощью… ». Чтобы исправить это, вы должны использовать полный путь к исполняемому файлу:
[HKCR\txtfile\shell\Notepad2]
"@"="e:\tools\editors\text\notepad2\notepad2.exe %1"
Это изменение (которое делает переменную PATH
существу бессмысленным) было улучшением безопасности, добавленным к Великому обновлению безопасности SP2, и имеет смысл в том, что оно предотвращает атаки путем внедрения пути.
Однако это больше проблем, чем стоит, потому что если вирус может изменить переменную системного пути, он уже получил доступ к системе и может делать все, что захочет. Более того, это влияет только на Explorer; запуск вещей из командной строки по-прежнему работает, как и раньше. Кроме того, он работает только для основной команды; то есть следующее работает, если путь к файлу infectednotepad.exe
notepad.exe:
"@"="e:\tools\misc\shellexecute.exe /c infectednotepad.exe %1"
Это изменение не дает никакой дополнительной безопасности; вместо этого все, что он делает, - это заставляет пользователя тратить часы на сканирование реестра в каждом из 6-10 различных мест, где могут быть зарегистрированы типы файлов, приложения и глаголы Explorer, в поиске безусловных путей и замене каждого и каждый (замена только основной записи в HKCR
недостаточна, потому что в других местах есть уровни, которые усугубляют проблему).
Кроме того, Microsoft, очевидно, понимает, что его «особенность» была бессмысленной, потому что они удалили ее в Vista. В Windows 7 первый пример работает так же, как в SP1.
«Исправление» элементов может быть непреодолимой задачей для системы, которая уже была настроена и использовалась в течение любого промежутка времени, особенно если были добавлены сторонние программы.
Есть ли способ отключить эту «функцию» и позволить переменной PATH
снова выполнить свою работу?