CreateProcessWithLogonW
От: rmars  
Дата: 14.11.03 12:35
Оценка:
Столкнулся с проблемой с CreateProcessWithLogonW под Windows Server 2003. Если вызывать эту функцию из сервиса (работает под LocalSystem), то возникает ошибка Access is denied. При этом если вызывать из обычного приложения, то все прекрасно работает. Под Win2k/XP проблем никаких нет, из сервиса все запускается.

LogonUser + CreateProcessAsUser из-под сервиса под Win2003 работают нормально, но их не хочется использовать из-за заморочек с доступом к оконной станции и десктопу.

Кто-нибудь с такой ситуацией сталкивался? Где тут могут быть грабли?
Re: CreateProcessWithLogonW
От: Valerio Россия linkedin.com/in/boronin
Дата: 14.11.03 14:03
Оценка:
Здравствуйте, rmars, Вы писали:

R>Столкнулся с проблемой с CreateProcessWithLogonW под Windows Server 2003. Если вызывать эту функцию из сервиса (работает под LocalSystem), то возникает ошибка Access is denied. При этом если вызывать из обычного приложения, то все прекрасно работает. Под Win2k/XP проблем никаких нет, из сервиса все запускается.


R>LogonUser + CreateProcessAsUser из-под сервиса под Win2003 работают нормально, но их не хочется использовать из-за заморочек с доступом к оконной станции и десктопу.


R>Кто-нибудь с такой ситуацией сталкивался? Где тут могут быть грабли?

попробуйте указать явно в качестве десктопа в STARTUPINFO
_T("WinSta0\Default")
... << RSDN@Home 1.1.0 stable >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: CreateProcessWithLogonW
От: rmars  
Дата: 14.11.03 14:59
Оценка:
Здравствуйте, Valerio, Вы писали:

V>попробуйте указать явно в качестве десктопа в STARTUPINFO

V>
V>_T("WinSta0\Default")
V>


К сожалению, тогда нужно самому добавлять права доступа к десктопу и станции:

For CreateProcessWithLogonW, if this member is NULL or an empty string, the new process inherits the desktop and window station of its parent process. CreateProcessWithLogonW adds permission for the specified user account to the inherited window station and desktop. Otherwise, if this member specifies a desktop, it is the responsibility of the application to add permission for the specified user account to the specified window station and desktop.


Хотя при запуске из сервиса с описанным выше наследованием десктопа и станции тоже не все ясно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.