0

经过一番确认,真的:

XP SP3 是否实现了 Vista 中的用户界面特权隔离 (UIPI) 机制?

人类兴趣的背景故事 :) 我最近将 C++ 源代码交给了一个相当大的应用程序。遗憾的是,自 90 年代中期以来,该应用程序的唯一开发人员最近去世了,这使我们处于非常紧张的境地,直到我们可以聘请新的开发人员。

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

知道这一点,虽然我不是 C/C++ 人,但我想我会看看源代码,看看是否能找到任何东西(花了很多时间查看防火墙、病毒扫描程序和其他外在因素)。

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

干杯!

莱尼。

4

2 回答 2

4

不,XP SP3 没有实现任何 Vista 安全更改,至少没有任何与窗口管理器相关的更改。您并没有真正提供太多背景信息来提供帮助,但是您会得到与 SendMessage() 相关的哪种错误?

SendMessage() 是一个使用非常广泛的例程,它只是将 Windows 消息发送到窗口,所以我希望该错误与接收者窗口如何处理传入消息(或不处理)有关,而不是与 SendMessage() 本身有关。与其将 SendMessage() 视为只是一个 Windows 函数,不如将其视为一个函数,该函数最终会在任何拥有您将消息发送到的窗口的应用程序中调用进一步的应用程序代码 - 特别是SendMessage() 的返回代码告诉您窗口的应用程序是如何尝试处理消息的。

于 2008-11-07T14:09:52.847 回答
0

UIPI 不会在 SendMessage 上报告错误 - 如果您收到错误返回,那么它是另一回事。其他评论者是对的,UIPI 仅适用于 Vista,除非您尝试向服务发送消息,否则无论如何您都不会对此感到厌烦。

于 2008-11-07T15:38:51.187 回答