Почему Spy++ не может видеть сообщения, отправленные в приложения UWP?

Пока мы все запутались в эта тема, выяснилось, что, хотя приложения UWP имеют окна верхнего уровня, и вы можете отправлять им (разумные) сообщения (* ), и эти сообщения делают проходят и имеют ожидаемый эффект, Spy++, кажется, никогда не видит эти сообщения или любые другие, которые может отправить сама Windows.

Кто-нибудь может пролить свет на это?

Для справки: у Spy нет проблем с поиском и проверкой этих окон («Инструмент поиска» работает просто отлично), но ведение журнала сообщений полностью отключено. Я протестировал приложение «Настройки», экранную клавиатуру, календарь и калькулятор и поставил все соответствующие флажки «Дополнительные окна» в Spy. Я также использовал Process Explorer, чтобы проверить, что Spy работает на «высоком уровне целостности» (потому что он работает с повышенными правами, предположительно), и это так.

(*) Да, я знаю, что мы не должны но, ну, вы знаете.


person Paul Sanders    schedule 20.05.2018    source источник
comment
Для работы Spy++ требуется SetWindowsHookEx(). У Microsoft есть много веских причин, чтобы сделать его неработоспособным в основном окне UWP, учитывая, что это был бы простой способ обойти ограничения песочницы.   -  person Hans Passant    schedule 21.05.2018
comment
Я считаю, что причина связана с Политика смягчения последствий процесса установлена ​​на отключить вызовы win32k   -  person Peter Torr - MSFT    schedule 21.05.2018
comment
@HansPassant Хорошая идея, но я не уверен, что куплюсь на это. Шпион пытается проникнуть в песочницу, а не за ее пределы, и является привилегированным, так почему бы и нет?   -  person Paul Sanders    schedule 21.05.2018
comment
@PeterTorr Спасибо, но нет. Во всяком случае, не в соответствии с mitigationview. Для Калькулятора не менее: DisallowWin32kSystemCalls 0. И здесь у нас есть После установки DisallowWin32kSystemCalls любой вызов USER/GDI завершится с ошибкой, что помешает приложениям UWP (хотя и скрытым) получать свои сообщения по обычным каналам, хотя я заметил, что они действительно их получают. [более]   -  person Paul Sanders    schedule 21.05.2018
comment
Итак, есть ли в Windows 10 какой-то новый секретный механизм передачи сообщений для приложений UWP? Это кажется маловероятным, отсюда и мое любопытство.   -  person Paul Sanders    schedule 21.05.2018
comment
Ах, я думаю, что это используется только дочерними процессами Edge, а не обычными UWP.   -  person Peter Torr - MSFT    schedule 22.05.2018
comment
@PeterTorr Хорошо, я вижу, что это имеет смысл. Я накопал новую информацию и добавил ее в свой пост, что вы думаете?   -  person Paul Sanders    schedule 22.05.2018
comment
@PeterTorr Решил это сейчас - никакой загадки нет, я просто сделал глупую ошибку, см. Редактировать. Спасибо за ваш вклад.   -  person Paul Sanders    schedule 11.06.2018
comment
Извините, см. ответ (похоже, что тролли тоже голосуют против).   -  person Paul Sanders    schedule 18.07.2018
comment
Справедливости ради, это не глупо - как вы говорите, никакой диагностики по этому поводу не было. Так что очень легко пропустить.   -  person Lightness Races in Orbit    schedule 28.07.2019


Ответы (1)


Эм, стыдно. Вам нужно использовать 64-битную версию Spy, чтобы шпионить за 64-битным приложением (и наоборот). Тогда это работает нормально, и вы получаете то, что ожидаете.

Конечно, было бы неплохо, если бы Spy сообщал вам, когда вы пытаетесь отследить сообщения в приложении неправильной разрядности, но это не так, так что будьте осторожны.

person Paul Sanders    schedule 18.07.2018