Ответ Аристоса сработает в тех случаях, когда пользовательские привилегии в порядке, а лицензионное соглашение SysInternals подтверждено. Я имею в виду, что утилита sdelete.exe из SysInternals будет запускаться под учетной записью Asp.Net, назначенной в IIS. Если эта учетная запись не имеет надлежащих разрешений и не приняла всплывающее лицензионное соглашение, файл не будет удален. Я столкнулся с этой самой проблемой прямо сейчас.
Вы можете указать домен / пользователя / пароль, используемый для запуска процесса. Это изложено здесь:
http://social.msdn.microsoft.com/Forums/hu-HU/netfxbcl/thread/70b2419e-cb1a-4678-b2ae-cedcfe08d06f
У автора этой темы были похожие проблемы, которые он решил, изменив владельца файла sdelete.exe.
В этом потоке также есть некоторая информация о входе в систему как пользователя, использованного для выполнения процесса и принятия лицензионного соглашения SysInternals:
sdelete.exe не работает с cfexecute
Однако это невозможно, если вы планируете использовать встроенные системные учетные записи Asp.Net, поскольку эти учетные записи пользователей не разрешают типичный вход в систему. Я могу быть вынужден создать отдельного пользователя, с которым я могу войти и принять лицензионное соглашение, а затем указать эти учетные данные для запуска процесса. Однако в моем случае неудобно, но у меня может не быть возможности создавать пользователей на моем производственном сервере.
Существуют способы принудительного принятия EULA с помощью параметра командной строки или простой записи в реестре. Но я думаю, что это работает только для «обычных» пользователей, а не для пользователей встроенной системы.