我有我目前工作的程序的问题。它是由增加的安全性在Vista /视窗7引起的,特别是其防止窗口具有较低完整性级别“谈话”到较高的UIPI之一。

在我的情况,我想告诉高完整性级别的窗口移动到我们的应用程序,它完美的作品在XP或Windows 7的安全性了。

我曾尝试直接设置更高IL窗口的HWND,而不是使用FindWindow函数()函数,此工作正常,但试图移动,或通常与它进行交互时该程序然后将失败。由应用程序保存在windowhandle到通过在较低的IL运行该应用是嵌入式的和读出。

我还试图在清单中设定UIaccess为TRUE和数字签名的程序,但没有运气。

这是如何解决这个问题的任何想法? 感谢。

有帮助吗?

解决方案

只是想我会跟进这件事的人谁也挣扎,我终于找到了一个办法做到这一点。

IL =完整性级别。

我有2个应用程序,highIL.exe和lowIL.exe的highIL想找到lowIL.exe窗口,将其设置为一个子窗口,并将其移动到为它创建于highIL.exe的区域。这被阻UIPI在Vista +。

在结束我使用在Vista中ChangeWindowMessageFilter方法和ChangeWindowMessageFilterEx在Windows7,无论在USER32.DLL找到。这些功能让你捅在UIPI一个洞,让你想通过邮件。

我使用RegisterWindowMessage函数创建了一些自定义消息,我使用该功能来注册在两个highIL和lowIL应用的方法,所述线看起来有点像这样:

const UINT MY_MOVEINTWINDOW_MSG = RegisterWindowMessage(_T("MyMsg.MoveWindow"));

在lowIL.exe然后能够将这些消息发送到highIL.exe窗口没有他们被阻挡。然后,它是仅简单地添加和写入消息处理程序的情况。

如果你有机会获得这两种高和低IL此方法才有效。 在MSDN也对ChangeWindowMessageFilterEx功能的工作示例有网站

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top