Возможный использовать Олицетворение при запуске non-exe обрабатывают в C#?

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

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

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

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

9
задан vargonian 8 February 2010 в 13:46
поделиться

1 ответ

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

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

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

3
ответ дан 3 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: