Re[3]: Процесс от имени другого пользователя
От: Alex Fedotov США  
Дата: 06.08.01 05:21
Оценка:
Здравствуйте Princ, вы писали:

P>1) Запущенное под сервисом приложение (CreateProcess & CreateProcessAsUser) не видимо, даже при залогиненом пользователе. Никаких ошибок не возникает, программа запускается и прекрасно работает, аналогичный код не в сервисе работает как ожидалось.


Если не предпринимать никаких дополнительных действий, то созданный из сервиса процесс будет выполняться на той же паре window station & desktop, что и сервис. Как правило, это неинтерактивная window station (если только при создании сервиса не был указан флаг SERVICE_INTERACTIVE_PROCESS).

Запуск процессов из сервиса на десктопе пользователя описан в http://www.microsoft.com/MSJ/0200/logon/logon.asp

P>2) Как правильнее из сервиса открыть зарегистрированный в системе документ (те открыть связанную программу и передать ей этот файл).


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

P>- ShellExecute [Ex] не подходят по причинам:

P> a) не позволяет запустить с правами требуемого пользователя
P> b) _как я понимаю_ не могут работать без загруженного шела... или могут?

Я думаю, что все-таки могут.

P>- FindExecutable

P> a) дает только свзяанный exe, но не то как запускать
P> b) то же

P>- (самый экстремальный вариант) — самому читать из реестра, но

P> a) придется предусмотреть всё самому
P> b) часть программ (пр ACDSee) принимает параметры по DDE, я совсем этим не занимался и опять же безопасность NT + DDE = ?

Есть безопасность и в DDE :) Самый простой вариант — это запустить свой процесс под нужным пользователем на нужной паре window station & desktop с помошью CreateProcessAsUser, а оттуда уже вызывать ShellExecuteEx.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.