Возможно ли использовать олицетворение при запуске не exe-процесса в C #? - PullRequest
9 голосов
/ 09 февраля 2010

Мне нужно иметь возможность запускать процесс от имени другого пользователя, и я нашел множество ресурсов и различных методов для этого. Проблема в том, что мне нужно запустить не exe-процесс, например путь с расширением html или, в моем случае, "http://somewebserver/someApp.application".

Существует известная проблема, при которой запущенные процессы не наследуют контексты олицетворения от своего средства запуска, а также известная проблема, при которой процессы, запускаемые с разными учетными данными, должны быть исполняемыми файлами (.exe).

Но как мне запустить файл .application (например) от имени другого пользователя?

(я пробовал всевозможные комбинации p /, вызывая CreateProcessWithLoginW, устанавливая учетные данные пользователя / пароля в ProcessStartInfo и т. Д. Каждый сталкивается с одинаковыми ограничениями, упомянутыми выше)

1 Ответ

3 голосов
/ 09 февраля 2010

При запуске не-exe, это просто оболочка, ищущая exe-файл для использования в качестве файла или URL-адреса. Там еще exe участвует.

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

Например, чтобы открыть файл .txt, посмотрите в «HKEY_CLASSES_ROOT \ .txt». Там вы увидите тип "txtfile". Затем найдите «HKEY_CLASSES_ROOT \ txtfile \ shell \ open \ command» и вы увидите, какой exe-файл будет использовать оболочка, (обычно) «% SystemRoot% \ system32 \ NOTEPAD.EXE% 1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...