c # — использование CreateProcessAsUser для запуска URL

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

Это определенно решит мою проблему за исключением того, что CreateProcessAsUser не принимает URI в качестве имени файла, выполнение завершится неудачно с сообщением об ошибке «Неверный синтаксис имени файла, имени каталога или метки тома»

Может кто-нибудь сказать мне, если есть способ запустить веб-сайт через CreateProcessAsUser или если есть аналогичный API, который выполняет эту работу. Обратите внимание, что мое реальное приложение всегда повышено, и поэтому я не могу использовать обычные Process.Start(), CreateProcess() или же ShellExecute()

3

Решение

Есть два разных семейства функций, которые вам нужно будет использовать для выполнения этой задачи:

  1. CreateProcess и связанные функции. Они могут быть использованы для запуска нового процесса. Вы должны указать имя файла исполняемого образа.
  2. ShellExecute и друзья. Они будут применять глаголы к файлам, используя правила оболочки для связи классов файлов с исполняемыми файлами.

Чтобы открыть URI, вам нужно использовать один из ShellExecute семьи. И для того, чтобы выполнить роль обычного пользователя из вашего повышенного процесса, вам нужно использовать один из CreateProcess семьи.

Вы не можете удовлетворить оба ваших требования с помощью одной функции. Поэтому ваше решение заключается в использовании одного из CreateProcessXXX функции для создания процесса, который запускается от имени обычного пользователя. Этот процесс в свою очередь вызовет ShellExecuteXXX, Вы передадите URI в качестве аргументов командной строки CreateProcessXXX,

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector