Re[3]: Запуск Outlook Express из сервиса (Win2000).
От: Alex Fedotov США  
Дата: 05.02.02 04:38
Оценка: 2 (1)
Здравствуйте Аноним, Вы писали:

AF>>Надо каким-то образом заполучить токен текущего пользователя. Это можно сделать:

AF>>1) перечислив процессы и взяв токен, скажем, еxplorer.exe (более точно — процесса оболочки, зарегистрированного в системе), либо

А>Я решил попробовать первый способ так как кажется он проще (пробовал в Delphi):


А>[...]


А>Вроде окно находит, дескриптор процесса получает, OpenProcessToken тоже без ошибок.

А>А при выполнении CreateProcessAsUser возникает ошибка 1314 (отказано в доступе ?).
А>Что я забыл сделать ?

Вроде раньше шла речь о сервисе, работающем в LocalSystem?

1314 = ERROR_PRIVILEGE_NOT_HELD, означает что у вызывающего пользователя нет необходимых привилегий для выполнения этой функции. И действительно, если внимательно посмотреть в документацию CreateProcessAsUser, то можно обнаружить, что она требует привилегию SE_ASSIGNPRIMARYTOKEN_NAME, которая по умолчанию есть только у LocalSystem.

То есть надо запускать этот код из сервиса, там должно работать.

P.S. В исходном коде стоит заменить PROCESS_ALL_ACCESS и TOKEN_ALL_ACCECSS на PROCESS_QUERY_INFORMATION и TOKEN_QUERY|TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY соответственно.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.