Как мне временно понизить высоту
Сценарий таков, что я запускаю службу от имени администратора.
У нас есть выноска, которая запускает пользовательский код (например, скриптинг). Для создания сборки, создания типа и вызова метода используется кодирование по принципу кодирования (на основе кода).
Я хочу временно отказаться от прав администратора на время вызова, а затем восстановить их.
2 ответа
Я запустил код в изолированном домене приложения, как описано в ссылке:
Как: запустить частично доверенный код в песочнице
http://msdn.microsoft.com/en-us/library/bb763046%28v=vs.100%29.aspx
Я не думаю, что вы можете "отбросить" привилегии так, как вы описываете; ваша служба работает как пользователь, и этому пользователю разрешен определенный объем доступа. Вы можете попросить Windows временно предоставить вам больше разрешений (именно об этом и говорит UAC), но вы не можете попросить его дать вам меньше!
Я бы создал второго пользователя в системе для запуска сценариев (с соответственно более низким уровнем доступа) и выдал себя за этого пользователя на время пользовательского кода.
[править] Оказывается, я не знаю, о чем говорю. Согласно этой ссылке, UAC реализован в обратном порядке, путем создания ограниченного набора разрешений и запуска кода в этом контексте.