![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
kirillkr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.4.2008 Где: Kaliningrad Репутация: нет Всего: нет |
Добрый день.
Прошу прощения возможно за глупый вопрос. Есть рабочее приложение-сервис, который устанавливается в систему и запускает заданные приложения. Сервис стартует под системной учетной записью с отключенной галкой разрешено взаимодействие с рабочим столом. Все приложения прекрасно стартуют и выполняются. Когда я авторизуюсь под любой учеткой в системе (локально) или в нулевую сессию удаленно - я вижу окна приложений которые сервисом стартовались. НО!!! Все это прекрасно работает в версиях максимум XP,2003. Начиная (наверно с Vista -нет возможности проверить, в Windows 7 точно) и Windows Server 2008 окна не отображаются. Прочитал http://msdn.microsoft.com/en-us/library/wi...5(v=vs.85).aspx Попробовал установить галку Разрешить взаимодействие с рабочим столом - не помогло. Запуск сервиса под учеткой с которой я логинюсь на компе - аналогично - не появляется. На форуме нашел http://forum.vingrad.ru/index.php?showtopi...t&p=2223868 но честно говоря не понял что именно из этого может мне помочь и как прикрутить это к моему коду.
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
И не поможет, начиная с Висты включительно. Для нулевой терминальной сессии создается отдельный рабочий стол, не имеющий никакого отношения к реальному рабочему столу пользователя. Вообще, там надо было смотреть метод таймера, из которого запускается cmd. Давненько это было, но (емнип) мне тогда не удалось победить запуск приложения с полными правами - всё запускаемое имело ограниченный... вроде_бы_токен_не_помню_точно, причем - как изменить права "стандартными" методами - я так и не нашел. Всё в MSDN говорило о том, что это невозможно, несмотря на всяческие ухищрения (выложенный код - далеко не последняя попытка сотворить подобное). Когда-то натыкался на код в MSDN, который вроде как позволял сделать запуск с правами админа, но - портированный в Delphi код так же не сработал, в итоге - я забил на это, т.к. появились другие задачи. Если кто-то победил эту задачу (запуск из сервиса в сессии, винста и десктопе пользователя с правами админа) - было бы крайне интересно посмотреть на решение. |
|||
|
||||
kirillkr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.4.2008 Где: Kaliningrad Репутация: нет Всего: нет |
В продолжении темы. Как из-под сервиса проверить не залогинен ли пользователь? Если еще ни один не залогинен, то сделать авторизацию по логину/паролю и получить его токен для запуска приложений в его сессии.
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
WTSEnumerateSessions вроде как. Если есть сессия с SessionID<>0, то юзер залогинен. Но может быть такое, что этот юзер выполнил "Пуск" - "Сменить пользователя" и висит на Winlogon-десктопе.
Хммм. А как? Емнип, получить доступ к Winlogon-десктопу даже посложнее, чем к десктопу пользователя. Т.е. свое окошко авторизации на нем тяжеловасто поднять. |
|||
|
||||
kirillkr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.4.2008 Где: Kaliningrad Репутация: нет Всего: нет |
Зачем? Я имею ввиду что-нибудь типа LogonAsUser(aUserName, aPassword, aDomain). Приложение Autologon (http://technet.microsoft.com/ru-ru/sysinternals/bb963905) позволяет автоматически входить в Windows без ввода логина и пароля, но она использует скрытые в реестре возможности. А как-нибудь через функцию это можно сделать? |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
||||
|
||||
kirillkr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 23.4.2008 Где: Kaliningrad Репутация: нет Всего: нет |
Большое спасибо. Благодаря этой функции и этой статье сервис снова работает и на последних OS http://www.cromis.net/blog/2010/01/how-to-...windows-vista7/ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |