用户界面特权隔离

用户界面特权隔离

问题描述:

刚做完位确认真的:用户界面特权隔离

确实XP SP3实现用户界面特权隔离(UIPI)机制在Vista中发现了什么?

为了人类的利益而重新开发的故事:) 我最近已经把C++源码交给了一个相当大的应用程序。可悲的是,这个应用程序的唯一开发者自从90年代中期成立以来就一直在离开我们,直到我们可以聘请一位新的开发人员。

最近有用户报告说,应用程序已经随机停止工作和/或以前工作的某些功能似乎根本没有触发“尽管没有任何改变我的结局!”。 “没有改变”原来是SP3 :)

知道这一点,虽然我不是C/C++的家伙,但我想我会看看源代码,看看我能否找到任何东西(花了很多时间考虑防火墙,病毒扫描器和其他外部因素)。

我将一个错误追溯到对Api函数SendMessage的调用,然后转到MSDN文档中查看。它明确指出“Microsoft Windows Vista及更高版本,消息发送受到用户界面特权隔离(UIPI)的限制。进程的线程只能将消息发送到处于较低或相同完整性级别的进程中的消息队列。虽然我不是100%确定,但这似乎是一个可能的原因。

干杯!

Lenny。

不,XP SP3没有执行任何Vista安全更改,至少与窗口管理器没有任何关系。你并没有给出太多的帮助背景,但是你会得到哪些与SendMessage()相关的错误?

SendMessage()是一个非常广泛使用的例程,它只是将Windows消息分派到一个窗口,所以我期望这个错误与接收方窗口处理传入消息(或不是)的方式有关,而与SendMessage ()本身。与其认为SendMessage()不仅仅是一个Windows函数,你必须把它看作是一个函数,它将最终在任何拥有你发送消息的窗口的应用程序中调用进一步的应用程序代码 - 特别是从SendMessage()返回代码告诉你窗口的应用程序是如何处理消息的。

UIPI不会在SendMessage上报告错误 - 如果您收到错误返回,那么它是别的。其他的评论者都是对的,UIPI仅仅在Vista上,并且不管怎样都不会被这个咬住,除非你试图向服务发送消息。