Снимок экрана и событие с Vista UAC - PullRequest
2 голосов
/ 29 марта 2009

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

Согласно Microsoft, мне нужно было изменить app.manifest: requiredExecutionLevel level = "Самый высокий доступный" uiAccess = "true"

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

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

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

Ответы [ 2 ]

2 голосов
/ 29 марта 2009

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

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

1 голос
/ 29 марта 2009

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

...