我们运行两个应用程序,他们每个人的使用RegisterWindowMessage注册相同的消息():应用程序A作为一个普通用户和应用程序B在同一用户的机器上会话管理员,并且这些应用会发送此消息彼此。 当A和B作为运行同一用户的一切都很好,我们能够使用PostMessage的()消息进行通信。 现在,作为管理员的邮件不通过任何更多的来作为应用程序B运行。 我们对于它可以做些什么呢?
这是否情况的任务我们使用其他机制(而不是消息的其他)?
我们运行两个应用程序,他们每个人的使用RegisterWindowMessage注册相同的消息():应用程序A作为一个普通用户和应用程序B在同一用户的机器上会话管理员,并且这些应用会发送此消息彼此。 当A和B作为运行同一用户的一切都很好,我们能够使用PostMessage的()消息进行通信。 现在,作为管理员的邮件不通过任何更多的来作为应用程序B运行。 我们对于它可以做些什么呢?
这是否情况的任务我们使用其他机制(而不是消息的其他)?
在Windows Vista中和以后, 用户界面特权隔离(UIPI)防止从发送窗口消息到一个更高的完整性的过程的较低的完整性的过程。 在早期版本的Windows,恶意代码可以被滥用的窗口消息攻击的行政程序。 默认情况下,UIPI块与以上的值的所有消息WM_USER
,其包括经由注册消息RegisterWindowMessage()
因此,为了允许这样的消息发送到B,B必须先调用ChangeWindowMessageFilter()
或ChangeWindowMessageFilterEx()
用于其想要从较低完整性过程接收每一拦截消息。