![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: 2 Всего: 4 |
Всем доброй ночи и других времен суток.
Есть такая функция GetWindow, при помощи которой я получаю хэндл первого попавшегося окна (Application.Handle, gw_HWNDfirst), так?. После, перечислением всех остальных окон (gw_HWNDnext) получаю хэндлы остальных [видимых] окон, выбирая из них через GetWindowText их заголовки. И все бы было здОрово, если бы программа работала с правами текущего пользователя. В силу обстоятельств, необходимо запускать ее с правами System, и вот тогда происходит беда - не определяются заголовки окон. И беда косвенная - при попытке сделать скриншот сохраняется ровное белое поле. Как будто права системы не позволяют видеть окна (ну бред же ведь?). Натолкните на правильную мысль, пожалуйста. Гугл не спасает. ОС Windows 7 IDE Delphi 7
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: нет Всего: 329 |
||||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: 2 Всего: 4 |
Нет, не сервис. Обычный Application. Будучи запущенным руками от текущего пользователя, видит заголовки окон, делает нормальный скриншот и выполняет некоторые другие функции. Будучи запущенным планировщиком задач от имени Системы, не хочет выполнять вышеописанных функций. С чем это связано - мне не понятно и хотелось бы узнать, а так же узнать возможные пути решения проблемы.
|
|||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: 2 Всего: 4 |
Все же откопал информацию о том, что у пользователя Система свои рабочий стол и WinSta и весьма проблематично переключаться с защищенного рабочего стола на пользовательский. Отсюда вытекает, что мне "проще" запускать программу от имени Администратора. Но тут такое "но" подкралось: в планировщике при создании задачи по умолчанию выставляется пункт "Выполнять только для зарегистрированного пользователя", а у меня все пользователи сидят под ограниченными учетками, соответственно, запуск программы по расписанию не состоится, ибо Админ не залогинен. Как же быть? Сделать сервис, запускающийся с правами системы (что даст отвязку от залогиненного пользователя) и он уже будет запускать основную программу, но с правами пользователя/администратора? Но как тогда это сделать - запуск с пониженными правами?
|
|||
|
||||
| Delvish |
|
|||
![]() oO ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 13.12.2006 Репутация: 2 Всего: 4 |
Как говорится, сам спросил - сам ответил
С пониженными правами запускать нужно так:
И тогда первое приложение, стартовавшее от имени системы, запустит второе, но уже с правами текущего пользователя |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |