hex.pp.ua

Ключ реестра PendingFileRenameOperations

PendingFileRenameOperations может удалить неудаляемые файлы




Ключ реестра PendingFileRenameOperations предназначен для операций отложенного переноса файлов. Файлы, записанные в этом ключе переносятся при старте системы. Делается это в том случае, если файлы заблокированы от изменений во время работы системы и не могут быть перенесены из-за этого.

Ключ реестра PendingFileRenameOperations также можно использовать для удаления неудаляемых файлов. Сделать это вручную можно следующим образом:

Удаление неудаляемого файла

  1. Запустить с помощью Пуск, Выполнить команду regedit и перейти в ней в ветку реестра HKLM\System\CurrentControlSet\Control\Session Manager
  2. Правка, Создать, Мультистроковый параметр, в качестве имени параметра ввести PendingFileRenameOperations.
  3. Открыть ключ реестра для редактирования, в поле "Значение" ввести префикс \??\ и после него полный путь к файлу, который требуется удалить. Длинные имена с пробелами не нужно заключать в кавычки. Например, чтобы удалить файл C:\Long Directory Name\Long File Name.exe нужно будет ввести такую строку:
    
    \??\C:\Long Directory Name\Long File Name.exe
    
    После этого нужно нажать OK.
  4. Формат этого ключа реестра предполагает также ввод второй строки, где должно содержаться имя файла, которое будет у файла после перемещения. Но в случае удаления файла, вместо имени должна быть пустая строка (нулевая). Ввести её можно следующим образом: Нажмите правой кнопкой мыши по ключу, и выберите "Изменить двоичные данные". Перейдите в конец шестнадцатиричной строки и введите 0000 (четыре нуля), нажмите ОК.
  5. Закройте редактор реестра 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-приложением.

система комментирования CACKLE

Автор: амдф
Дата: 04.02.2011


Разделы сайта
Главная
Блог
Native API
NTFS и ReFS
Микроконтроллеры
Справочник NTDLL
Коды NTSTATUS
Разное

Избранное
NTFS Stream Explorer
Native Shell
Тенгвар

Остальное
nvpnhcknn (архив)
English pages
Контакты

Ленты atom
Лента Atom сайта Лента Atom блога



При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт.