5 способов просмотреть, запланировать удаление или перемещение файлов при следующей загрузке Windows

Файлы, которые в данный момент открыты или используются в Windows, нельзя перемещать или удалять до тех пор, пока они не будут закрыты. Большую часть времени закрытие связанной программы будет выполнять эту работу, но иногда она все равно не будет работать, поскольку она сопоставлена ​​с памятью или защищена другим процессом. Для решения этой проблемы большинство из нас просто полагалось бы на стороннее программное обеспечение, такое как FileASSASSIN, LockHunter, IObit Unlocker, BlitzBlank и т. Д., Которое способно обнаруживать заблокированные файлы и пытаться разблокировать их для дальнейших действий. Разблокировка заблокированных файлов имеет свой собственный риск, который может привести к сбоям в операционной системе.

Более безопасное решение – пометить файл для удаления при следующей перезагрузке, и операционная система Microsoft Windows упростила разработчикам, поскольку она поставляется с API MoveFileEx для удаления или переименования / перемещения файлов при следующей загрузке системы. Эта задача выполняется путем чтения записи реестра под названием PendingFileRenameOperations находится по адресу HKLM SYSTEM CurrentControlSet Control Session Manager. Обратите внимание, что раздел реестра PendingFileRenameOperations не будет существовать, если не будет ожидающей операции.

Если вам не нравится возиться с реестром Windows, у нас есть несколько бесплатных инструментов, которые могут помочь вам прочитать ключи PendingFileRenameOperations и отобразить список ожидающих файловых операций. Некоторые из них позволяют планировать перемещение и удалять команды для следующей перезагрузки.
1. PendMoves и MoveFile

PendMoves – это простое приложение командной строки от Windows Sysinternals, где оно может читать ключи PendingFileRenameOperations и отображать список файлов, которые будут либо удалены, либо перемещены в новое целевое местоположение. Пустая цель будет отображаться как DELETE, иначе это будет новое место, куда будет перемещен исходный файл.

PendMoves

Поскольку PendMoves является приложением командной строки, его необходимо запустить из командной строки, чтобы увидеть результаты, иначе вы получите только мигающее черное окно, открывающееся и закрывающееся само по себе. Нажмите WIN + R, введите CMD в поле «Выполнить» и нажмите «ОК». Перейдите в каталог, в котором находится pendmoves.exe, и введите имя файла для запуска приложения.

Отдельное приложение с именем MoveFile, которое связано с PendMoves в архиве, предназначено для добавления записи в PendingFileRenameOperations, чтобы запланировать удаление или перемещение файла при следующей загрузке Windows. Просто укажите источник и место назначения для перемещения файла или оставьте место назначения пустым с двумя двойными кавычками, чтобы удалить источник.

Приведенный ниже пример команды переместит test.zip из C: на рабочий стол учетной записи пользователя Raymond.

C: movefile.exe c: test.zip c: raymond user desktop test.zip

Приведенная ниже команда запланирует удаление файла test.zip при следующей загрузке Windows.

C: movefile.exe c: test.zip «»

Скачать PendMoves и MoveFile

2. WhyReboot

Если вы предпочитаете более удобный инструмент с графическим пользовательским интерфейсом, WhyReboot будет вашим выбором. WhyReboot – это небольшой и портативный инструмент, который отображает список ожидающих файловых операций и дополнительно раздел реестра RunOnce. Раздел реестра RunOnce – это инструкция для Windows автоматически запускать указанную программу только один раз во время запуска, и этот ключ будет удален после обработки запроса.

whyreboot

Хотя WhyReboot создан для того, чтобы определить, следует ли перезагрузить компьютер при появлении запроса после установки программы или обновления, он все еще довольно далек от того, чтобы сделать это. WhyReboot не может сообщить вам, был ли заменен важный драйвер ядра или файл DLL, и требует перезагрузки для загрузки, что довольно часто встречается в программах, основанных на безопасности, таких как антивирусные программы.

Скачать WhyReboot

3. WMI VBScript

Для администраторов или программистов, которые предпочитают сценарии для гибкости при внедрении автоматизации, мы нашли удобный WMI VBScript, написанный Томом Миллсом (Tom Mills), архитектором решений со службами Microsoft. По сути, файл VBS выполняет чтение и анализ PendingFileRenameOperations, показывая результат во всплывающем окне.

CheckPendingFileRenameOperations

Код VBS можно получить на официальном сайте блога Tom Mills MSDN или скачать скрипт ниже.

Скачать файл CheckPendingFileRenameOperations.vbs

4. MoveEx

Существует две версии MoveEx, одна из которых создана Александром Фринком, которую можно найти в Softpedia, другая – Фрэнк Вестлейк из ss64.net, и мы показываем последнюю. Причиной, по которой мы предпочитаем MoveEx Фрэнка, а не Александра, является возможность удалять отдельные записи в PendingFileRenameOperations, а не просто анализировать и отображать операцию.

moveex удалить отдельные отложенные файлы

Чтобы просмотреть записи PendingFileRenameOperations, просто запустите приложение в командной строке. Чтобы удалить отдельную запись PendingFileRenameOperations, вам нужно добавить / d вместе с номером записи, который отображается при запуске MoveEx без аргумента командной строки. Как вы можете видеть на скриншоте выше, первая команда перечисляет все записи в PendingFileRenameOperations, а вторая команда, имеющая «/ d 003», удаляет третью запись.

Добавление записи PendingFileRenameOperations с использованием MoveEx аналогично MoveFile из Sysinternals, который указывает источник, за которым следует цель. Если оставить целевой объект пустым, Windows удалит исходный файл.

Скачать MoveEx

5. Добавить или удалить запись PendingFileRenameOperations вручную

Нет проблем в ручном удалении ключа PendingFileRenameOperations из системного реестра, но добавить запись сложно, поскольку это значение REG_MULTI_SZ, а не обычная строка или DWORD. Чтобы удалить, просто перейдите к HKLM SYSTEM CurrentControlSet Control Session Manager в реестре и удалите ключ PendingFileRenameOperations.

Удалить PendingFileRenameOperations

Чтобы добавить запись об удалении, перейдите в HKLM SYSTEM CurrentControlSet Control Session Manager щелкните правой кнопкой мыши на правой панели, перейдите в New, выберите Multi-String Value и назовите это как PendingFileRenameOperations, Дважды щелкните по вновь созданному значению реестра и введите полное местоположение файла, начиная с ?? (например, ?? C: raymondcc.exe), который вы хотите запланировать для удаления. Нажмите OK, когда вы закончите. Теперь щелкните правой кнопкой мыши на PendingFileRenameOperations и выберите Изменить двоичные данные, Вы должны увидеть кучу цифр в данных значения. Введите четыре нуля «00 00» без кавычек в конце шестнадцатеричной строки и нажмите ОК. Перезагрузите компьютер, и файл будет удален.

добавить пустое строковое значение

Как ни странно, планирование операции перемещения файла во время загрузки Windows с использованием PendingFileRenameOperations намного проще по сравнению с удалением, поскольку не требует изменения двоичных данных в реестре. Следуйте приведенным выше инструкциям, пока не дойдете до детали, чтобы добавить данные значения в поле «Изменить несколько строк». Вам нужно указать два пути, который является источником и целью. Пример ниже переместит файл raymondcc.exe из C: source в c: target.

?? C: источник raymondcc.exe ?? C: цель raymondcc.exe

ожидание перемещения файла