Требование прав администратора при запуске с 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.

Другие вопросы по тегам