Требование прав администратора при запуске с CD
У меня есть приложение Windows C#, которое требует прав администратора. Я создал app.manifest, изменив его, добавив
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Когда я запускаю его прямо с моего компьютера, все в порядке, ОС подсказывает мне UAC и все работает нормально. Теперь, если я записываю все файлы на компакт-диск (или образ iso), некоторые команды не запускаются с правами администратора, что приводит к ошибкам. В частности, Directory.Delete, Directory.Copy (с рекурсивным параметром) не работают.
Я также пытался обернуть метод Delete по умолчанию, делая что-то вроде:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public static void delete(string source, bool recursive)
{
if (Directory.Exists(source))
{
Directory.Delete(source, recursive);
}
}
Но я получаю "Запрос основного разрешения не удался". ошибка.
Есть ли еще что-то, чего мне не хватает? Почему все должно быть иначе, если вы работаете в каталоге на моем компьютере или работаете с CD?
Спасибо Фабио
1 ответ
В.NET есть нечто, называемое CAS (Code Access Security). CLR обрабатывает вашу программу по-разному, когда она из другого источника (поэтому локальная интрасеть, Интернет и локальный диск обрабатываются по-разному)
При загрузке с компакт-диска настройки вернутся в режим с меньшими правами.
Вы можете найти больше на CAS здесь на MSDN.
Вы можете запросить привилегии, добавив и настроив файл app.manifest.