Как отследить, какой системный вызов или исполняемый файл использует инструмент Windows для удаления профилей пользователей?

Как отследить, какой системный вызов или исполняемый файл использует инструмент Windows для удаления профилей пользователей?

Сначала немного предыстории.

Я имею дело с большим количеством поддержки конечных пользователей на рабочем столе, связанных с Onedrive. Иногда, если клиент Onedrive полностью ломает себя и свою библиотеку, нам приходится перестраивать. Обычно это включает удаление старого местоположения библиотеки и повторную синхронизацию. Довольно часто, если клиент не вышел из системы или не отключился чисто, эти библиотеки просто не позволяют удалить их с помощью File Explorer из-за чего-то похожего на эту KB:https://learn.microsoft.com/en-us/sharepoint/troubleshoot/sync/delete-onedrive-synced-file-error. К сожалению для меня и нашей команды техников, CHKDSK часто полностью не может исправить эту проблему, или в других случаях мы не можем использовать CHKDSK. Это означает, что у нас есть библиотека в подвешенном состоянии, и мы обычно прибегаем к ее переименованию и скрытию, и позволяем Onedrive создать новую рабочую библиотеку.

Вот в чем загадка. Даже в ситуациях, когда File Explorer дал сбой и рекурсивный вызов метода Delete() с использованием PowerShell дал сбой, меню профиля пользователя в системном меню все равно может полностью удалить папку профиля пользователя, содержащую одну из этих сломанных библиотек Onedrive.

Меню, о котором я говорю:https://i.stack.imgur.com/3jTW2.png

Я хотел бы узнать, есть ли способ узнать, какой волшебный системный вызов или утилита используется Windows для принудительного удаления этих папок библиотеки Onedrive, чтобы я мог сделать это сам. Это достаточно распространенная проблема для нас, поэтому я потратил значительное время, пытаясь выяснить, как это происходит. Если кто-то знает об этом больше, я был бы рад услышать вашу мудрость.

Спасибо.

решение1

Первое, что я бы попробовал, это запустить Process Monitor.https://learn.microsoft.com/en-us/sysinternals/downloads/procmonв системе во время его удаления, а затем просматривая выходные данные: что именно запускалось, к каким путям осуществлялся доступ и т. д.

Обратите внимание, если вы не знакомы с ProcMon, он выдает МНОГО данных, поэтому я бы рекомендовал убедиться, что вы настроили его на сохранение вывода в файл, а НЕ в память, например, перейдите в Файл > Резервные файлы и задайте имя файла. Также вам нужно будет остановить и очистить захват, прежде чем вы начнете, начать захват непосредственно перед тем, как вы начнете удаление, и остановить его снова сразу после этого. В противном случае у вас останется МНОГО ненужной информации. Затем вам останется только отфильтровать те фрагменты информации, которые, как вы знаете, не являются важными, например, фоновые процессы, обращающиеся к файловой системе, службы, подключающиеся к ресурсам и т. д., пока вы не сократите объем данных до разумного размера, где вы сможете просмотреть их, чтобы увидеть, что именно произошло в системе.

Связанный контент