Удалить файлы, которые окна не хотят, чтобы я удалил? - PullRequest
2 голосов
/ 14 апреля 2010

В моей компании мы пишем сценарий для решения простых задач, которые мы обычно выполняем вручную. Я использую C # для удаления профилей в C: \ Documents and Settings \, за исключением нескольких. Их просто оставят в покое. Проблема в том, что даже с кодом, который устанавливает файлы в нормальное состояние и помечает администратора как владельца, они не будут удалены. Говорят, что в папке быстрого запуска доступ запрещен. Я использую рекурсивный метод изменения разрешений и знаю, что он работает. То же самое с атрибутами файла. Почему это не сработает? Как мне это исправить?

Ответы [ 4 ]

6 голосов
/ 14 апреля 2010

Проблема может заключаться в том, что другие процессы имеют открытые дескрипторы этих файлов или каталогов.Чтобы помочь вам выяснить, какие процессы виноваты, вы можете использовать функцию поиска Process Explorer , чтобы найти их.

(Просто чтобы прояснить: это не предложение оВы можете написать код для удаления файлов, но есть подсказка о том, как точно определить, что мешает работе вашей текущей системы.)

3 голосов
/ 14 апреля 2010

Это может быть не проблема с разрешениями, а проблема с блокировкой файлов. Оба будут казаться проблемой с разрешениями.

1 голос
/ 14 апреля 2010

Вы можете убедиться, что это вызвано блокировкой файла, а не контролем доступа, загрузив инструмент Process Explorer с http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Запустите от имени администратора и используйте Find-> Handle или Dll, чтобы увидеть, заблокировано ли оно.

В противном случае вы сможете без проблем вступить во владение и предоставить доступ к удалению.

0 голосов
/ 14 апреля 2010

Это очень сложно, вам нужно использовать PInvoke для вызова нативных API (и я не уверен, какие из них). Unlocker , утилита для разблокировки файлов, используемых другими процессами, делает это. Он еще не работает с Windows 7 и 64-разрядными версиями некоторых выпусков Windows.

...