Смотрите на этот статья. Я думаю, что Вы будете изо всех сил пытаться сделать это в C# исходно, даже с помощью interop, но пишущий, что C++ / блок обертки CLI может быть хорошим компромиссом. Обратите внимание также, что у пользователя должно быть полномочие SE_DEBUG для этого для работы.
Я боролся с этим также и закончил тем просто, что вышел из оболочки к реализации командной строки Неблокировщика. В моем случае это должно работать много раз ежедневно и заканчивает тем, что разблокировало тысячи файлов в день без любой проблемы.
Конечно, Вашего приложения желает очистить временные файлы, которыми оно владеет, затем Вы имеете полный контроль, чтобы разблокировать эти файлы и удалить их!
, Если Вы желаете удалить все ВРЕМЕННЫЕ файлы, необходимо ли находящийся в собственности Вашего приложения или иначе, быть ОЧЕНЬ осторожными. Исходное приложение, вероятно, применило блокировку, потому что это хочет использовать файл!
, Если Вы действительно должны, Вы могли бы всегда порождать приложение командной строки вместо того, чтобы пытаться копировать функциональность существующих инструментов, которые будут трудными в C#.
Проверьте этот поток на форумах MSDN. Существует достаточно информации, чтобы сделать то, что Вы хотите, но не рекомендуемый.