Как мне временно понизить высоту

Сценарий таков, что я запускаю службу от имени администратора.

У нас есть выноска, которая запускает пользовательский код (например, скриптинг). Для создания сборки, создания типа и вызова метода используется кодирование по принципу кодирования (на основе кода).

Я хочу временно отказаться от прав администратора на время вызова, а затем восстановить их.

2 ответа

Решение

Я запустил код в изолированном домене приложения, как описано в ссылке:

Как: запустить частично доверенный код в песочнице

http://msdn.microsoft.com/en-us/library/bb763046%28v=vs.100%29.aspx

Я не думаю, что вы можете "отбросить" привилегии так, как вы описываете; ваша служба работает как пользователь, и этому пользователю разрешен определенный объем доступа. Вы можете попросить Windows временно предоставить вам больше разрешений (именно об этом и говорит UAC), но вы не можете попросить его дать вам меньше!

Я бы создал второго пользователя в системе для запуска сценариев (с соответственно более низким уровнем доступа) и выдал себя за этого пользователя на время пользовательского кода.

[править] Оказывается, я не знаю, о чем говорю. Согласно этой ссылке, UAC реализован в обратном порядке, путем создания ограниченного набора разрешений и запуска кода в этом контексте.

http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-for-Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx

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