PendingFileRenameOperations может удалить неудаляемые файлы
Ключ реестра PendingFileRenameOperations предназначен для операций отложенного переноса файлов. Файлы, записанные в этом ключе переносятся при старте системы. Делается это в том случае, если файлы заблокированы от изменений во время работы системы и не могут быть перенесены из-за этого.
Ключ реестра PendingFileRenameOperations также можно использовать для удаления неудаляемых файлов. Сделать это вручную можно следующим образом:
Удаление неудаляемого файла
- Запустить с помощью Пуск, Выполнить команду regedit и перейти в ней в ветку реестра
HKLM\System\CurrentControlSet\Control\Session Manager
- Правка, Создать, Мультистроковый параметр, в качестве имени параметра ввести PendingFileRenameOperations.
- Открыть ключ реестра для редактирования, в поле "Значение" ввести
префикс
\??\
и после него полный путь к файлу, который требуется удалить. Длинные имена с пробелами не нужно заключать в кавычки. Например, чтобы удалить файлC:\Long Directory Name\Long File Name.exe
нужно будет ввести такую строку:
\??\C:\Long Directory Name\Long File Name.exe
После этого нужно нажать OK. - Формат этого ключа реестра предполагает также ввод второй строки, где должно содержаться имя файла, которое будет у файла после перемещения. Но в случае удаления файла, вместо имени должна быть пустая строка (нулевая). Ввести её можно следующим образом: Нажмите правой кнопкой мыши по ключу, и выберите "Изменить двоичные данные". Перейдите в конец шестнадцатиричной строки и введите 0000 (четыре нуля), нажмите ОК.
- Закройте редактор реестра regedit и перезагрузите компьютер, чтобы произшло удаление файла.
Перенос неудаляемого файла
Последовательность действий точно такая же, только в пункте 3 следует ввести два пути через пробел. Например, чтобы перенести C:\tmp\file1.txt в file2.txt нужно ввести такую строку:
\??\C:\tmp\file1.txt \??\C:\tmp\file2.txt
Дальше следует открыть двоичные данные, найти в конце первой строки последовательность 0020, стереть эти два байта клавишей Delete и ввести 0000 (четыре нуля). Это заменит пробел, разделяющий строки на нулевой символ, как того требует формат ключа PendingFileRenameOperations. После перезагрузки файл будет переименован.
Позже на сайте будет размещён материал о программной реализации данного способа переноса и удаления файлов при загрузке Windows.
О префиксе
А что же означает префикс \??\
, добавляемый перед путём файла? Это префикс
пути в формате NT. Именно такой формат указания пути к файлам часто используется в приложениях,
написанных с использованием Native API
и библиотеки ntdll.dll. Такой формат пути файла используется в ключе
PendingFileRenameOperations потому, что файловыми операциями, описанными в этом ключе
занимается менеджер сессий Windows (smss.exe), программа, являющаяся native-приложением.
Автор: амдф
Дата: 04.02.2011
Избранное
Остальное
По вопросам сотрудничества и другим вопросам по работе сайта пишите на cleogroup[собака]yandex.ru