Удалить все файлы из любой папки

Когда я удаляю файлы вручную, используя меню правой кнопки мыши, они удаляются.

Но когда я запускаю этот код:

string[] filePaths = Directory.GetFiles(@"c:\My cloud\VM Instances\");
foreach (string filePath in filePaths)
     File.Delete(filePath);

Я получил эту ошибку:

«Первое случайное исключение типа «System.UnauthorizedAccessException» произошло в mscorlib.dll. Доступ к пути «c:\My cloud\VM Instances\i-7e3cbb19 (manish).cvm» запрещен. Поток» (0xb5c) завершился с кодом 0 (0x0). Возникло первое случайное исключение типа «System.UnauthorizedAccessException» в mscorlib.dll «cloud_sync.vshost.exe» (управляемый (v4.0.30319)): загружен «C:\WINDOWS\Microsoft. Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', символы загрузки пропущены. Модуль оптимизирован, и включен параметр отладчика «Только мой код».

И что я должен делать?


person manish    schedule 13.04.2012    source источник


Ответы (1)


Процесс, который выполняется в вашем коде, имеет другие разрешения, чем ваш интерактивный процесс входа в систему. Большой намек на то, что вы получаете UnauthorizedAccessException.

Это веб-сайт? Если это так, рабочий процесс ASPNET по умолчанию имеет очень ограниченные разрешения (и было бы опасно далеко отклоняться от этого значения по умолчанию).

Это служба Windows? Если это так, по умолчанию они также запускаются от имени пользователя с очень ограниченными разрешениями.

person Eric J.    schedule 13.04.2012
comment
Спасибо, что так быстро ответили. Это оконный сервис. Итак, как я могу запустить свой код со всеми разрешениями? - person manish; 13.04.2012
comment
Спасибо, что так быстро ответили. Это оконный сервис. Итак, как я могу запустить свой код со всеми разрешениями? - person manish; 14.04.2012
comment
@manish, рассмотрите возможность задать отдельный вопрос или, что еще лучше, выполните поиск разрешений учетной записи службы Windows в поисковой системе (например, bing.com/search?q=windows+service+account+permissions ). - person Alexei Levenkov; 14.04.2012
comment
Вы, вероятно, не хотите просто давать службе Windows все разрешения по всем направлениям, потому что кто-то, кто взламывает вашу службу, получает слишком много доступа. Вместо этого отделите код, для которого требуется повышенное разрешение, и запустите только эту часть с дополнительными разрешениями. См. codeproject.com/Articles/105506/< /а> - person Eric J.; 14.04.2012
comment
@ЭрикДж. Я очень новичок в этой области, и это мой первый системный сервис. Я прочитал эту ссылку, но я не понял, что делать. Я использую VS2010. Пожалуйста, помогите мне. - person manish; 14.04.2012