Похоже, что возвышение привилегий - это обычная вещь, с которой большинство разработчиков сражаются, поскольку большую часть времени они просто не имеют ее. Я для одного, но я борюсь с массивным фоном Worker, и я пытаюсь сохранить свой код локальным в классе, который будет его использовать. Учитывая объем кода и ссылки мой фон работник делает, когда он заканчивает внутри метода обработчика «RunWorkerCompleted» ее доказать, вольно сложном, чтобы принять это в качестве жизнеспособной альтернативы:Как олицетворять встроенную роль администратора Windows для WinForms, C# App?
Существует слишком большая зависимость от моего MainForm класс моим фоновым рабочим для меня, чтобы рассмотреть возможность доставки всего решения в отдельный процесс с помощью «Администраторов». Это предполагает слишком много измельчения и изменения.
Начитавшись в CAS для 70-536 экзамена, я знаю большинство терминов в этом примере выше, но я не смог понять, как и почему это работает? Может ли кто-нибудь объяснить, почему разрешение предоставляется методу ManagersOnly? Как когда-то PrincipalPolicy изменяется на WindowsPrincipal, следующие два шага выглядит как обычные заявления объекта инстанцирования, как поставленный на что-то вроде:
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal, IPrincipal, IIdentity);
Очевидно, что нет такой перегрузки не существует, но его очень ясно, что делает это перегрузка.
Вопрос 1: Как пример OmegaCoders достигает такого эффекта? Поскольку он определенно работает, так как мой пользователь входит в группу «BUILTIN \ Administrators». Я ищу литературный ответ, так что вам нужно столько деталей, сколько вы чувствуете.
UPDATE 1:
Вопрос 2: Как бы я вернуться в PrincipalPolicy вернуться к тому, что было раньше ... когда-то метод возвращает мне не нужно PrincipalPolicy еще значение ' WindowsPrincipal '??? Таким образом, приложение может работать как пользователь с более низким приоритетом, как я предполагал.
Вопрос 3: Как только метод «ManagersOnly» возвращается, разрешение отбрасывается? Является ли это областью жизни метода?
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
* UPDATE 2: *
Это оказывается трудным, так как на моем Win7 Pro Dev машины я могу проверить и запустить что-нибудь, но когда я попытался тестируя код на простом Win7 Home ноутбук Я выяснил, что разрешениям отказано. Что вызывает вопросы, связанные с изменением принципа PrincipalPolicy на «WindowsPrincipal», не работает для всех пользователей Vista и Win7, поскольку многие из них даже не являются частью группы пользователей admin. Так что этот вариант бесполезен ... Сидя на этом маленьком ноутбуке, он становится довольно очевидным, и это не то решение, которое мне нужно.
IGNORE PREVIOUS Qs - с моими собственными исследованиями, которые я сделал, они невозможны.
Вопрос 4: как вы идете о том, чтобы выдать себя за администратора программным и временным образом в коде?