《QDebug 2023年9月》

一、Qt Widgets 问题交流

1.Qt 程序在 Windows 上以管理员权限运行时无法响应拖放(Drop)

无论是 Widget 还是 QML 程序,以管理员权限运行时,都无法响应拖放操作。可以右键管理员权限打开 Qt Creator,然后丢个文本文件进去测试,普通权限才能正常打开文本。

拖拽时 explorer.exe 向当前进程发 WM_DROPFILES 消息,因为 explorer.exe 默认中等权限低于管理员权限,WM_DROPFILES 的消息被拦截了。这里涉及到 Windows UIPI,即 User Interface Privilege Isolation(用户界面特权隔离),是 Windows Vista 时引入的一种安全特性,用于拦截接收比自身进程 MIC(Mandatory Integrity Control,强制完整性控制)等级还低的进程发来的消息。

如果是 VC 的程序,可以设置 Filter:

    ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
    ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
    ChangeWindowMessageFilter(SPI_SETANIMATION, MSGFLT_ADD);

但在 Qt 里设置了也没效果。

网上一个可行的方案是,需要管理员权限的操作放到单独的进程,UI 进程保持默认权限。

二、Qt Quick 问题交流

1.习惯性偷懒,隔天接着写

三、其他

1.

你可能感兴趣的:(QDebug,稍纵即逝的追寻,Qt)