2010-06-17 2 views
3

Мое приложение только изредка требует повышения привилегий ... Мне нужно обратиться к некоторым сторонним COM-компонентам, которые работают корректно только при запуске как администратор.Privilege Elevation только когда и если требуется

Я бы хотел, чтобы мое приложение запрашивало повышение привилегий только тогда, когда оно в нем нуждается ... Как правило, я не хочу, чтобы мое приложение запускалось как администратор, если мне не нужно использовать сторонние COM-компоненты.

Я вижу, что CoCreateAsAdmin может потенциально решить эту проблему, но автор компонент не устанавливает необходимые записи в реестре, и я не знаю, как использовать CoCreateAsAdmin в C# и в связке с исполнением программы Callable- Обертка, созданная tlbimp.

Другим решением будет создание другого процесса, но у меня нет опыта с этим еще ... Я не хочу создавать совершенно отдельное приложение ... Я был бы рад создать сборку, которая работает в если кто-то может показать мне, как заставить его работать.

Спасибо ...

ответ

3

привилегии процесса основаны на маркере пользователя, процесс работает под, который назначается только при процесс начинается. Поэтому нет способа повысить ваш процесс после того, как он уже запущен. Единственный надежный способ повышения во время выполнения - это создать новый процесс.

К счастью, это довольно легко. Используйте объект Process для выполнения командной строки, которая будет регистрировать и запускать COM-сервер. Убедитесь, что манифест приложения .exe, который вы используете, указывает на то, что он требует повышения, и пользователь будет автоматически запрашиваться перед его запуском.

1
+0

Это полезно, но не является примером того, что я хочу сделать. Если я создаю отдельный процесс для запуска привилегированной операции, есть ли простой способ для него вернуться к процессу, который работает как стандартный пользователь? –

Смежные вопросы