CreateProcessAsUser win api не работает на платформах не win7 - PullRequest
1 голос
/ 01 августа 2011

Я использую функции Win-API: LogonUser Загрузить профиль CreateProcessAsUser

с использованием java и jniwrapper.

я запускаю свое приложение как сервисный процесс (учетная запись локальной системы).

если я использую CreateProcessWithLogon - он работает только в том случае, если я не работаю со службой (просто обычное автономное приложение).

процесс успешно создан на Windows 7, но не на серверах Win XP и Win 2003.

У вас есть какие-либо подсказки? как мне управлять привилегиями процесса / пользователя на платформе win?

спасибо ....

1 Ответ

0 голосов
/ 02 августа 2011

Способ взаимодействия окон со службами и способы их взаимодействия изменились в NT 6.0 (Vista, Server 2003 R2). Обычно это сложный предмет, потому что он включает в себя создание процессов и особенно UI из чего-то, что должно быть неинтерактивным. Осмысление этого часто подразумевает хорошее знание того, что такое Session, Winsta и Desktop на Windows.

Изменение (названное «Сеанс 0 изоляция») задокументировано здесь: http://msdn.microsoft.com/en-us/windows/hardware/gg463353. В нем говорится, что правильный способ отображения пользовательского интерфейса из службы - это создание нового процесса с использованием CreateProcessAsUser, но вы уже знали об этом, поскольку ваша машина с Windows 7 работает.

Если я правильно помню, поведение CreateProcessAsUser также изменилось: в предыдущих версиях оно НЕ добавляло пользователя автоматически на winsta и рабочий стол (которые являются защищаемыми объектами, то есть объектами с ACL, такими как файлы):

"Если приложение указывает рабочий стол в элементе lpDesktop, оно ответственность приложения, чтобы добавить разрешение для указана учетная запись пользователя для указанной оконной станции и рабочего стола. "

Эта цитата взята отсюда: http://support.microsoft.com/kb/165194 Очень полезная статья! Включает примеры кода о том, как сделать все ACL вещи (к сожалению, неуправляемый код ...)

Кроме того, вы можете найти дополнительную информацию здесь: http://msdn.microsoft.com/en-us/library/aa379608%28v=vs.85%29.aspx

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