Захват экрана и событие с Vista UAC

Я разработал приложение на C #, которое захватывает экраны с помощью bitblt и отправляет события клавиатуры и мыши с помощью вызовов keybd_event и mouse_event.

Согласно Microsoft, мне нужно было изменить app.manifest с помощью: requestExecutionLevel level = "highAvailable" uiAccess = "true"

Подпишите приложение и поместите его в надежное место (программные файлы).

Я сделал все это, чтобы приложение работало с повышенными привилегиями под Vista, но когда появляются диалоговые окна UAC, они не захватывают эти экраны, а события клавиатуры и мыши не доходят до диалогового окна UAC.

Я предполагаю, что UAC работает на другом рабочем столе ?? если да, то как мне это запечатлеть? и как я могу определить, когда рабочий стол переключается на диалоговое окно UAC в C #? или я просто пропустил шаг?


person Community    schedule 29.03.2009    source источник


Ответы (2)


UAC работает на защищенном рабочем столе, в этом контексте разрешено запускать только доверенные процессы, запущенные в системной учетной записи.

Это сделано для того, чтобы предотвратить именно то, чего вы пытаетесь достичь - подделку процессов или перехват пользовательского ввода.

person Andrew Grant    schedule 29.03.2009

Тебе нельзя. Рабочий стол UAC безопасен, потому что не позволяет никому получить к нему доступ. Чтобы обнаружить событие переключения рабочего стола, я бы попытался использовать SENS или WTSRegisterSessionNotification. Но это не выглядит многообещающим.

person Community    schedule 29.03.2009