UIAccess 特权允许应用访问辅助应用程序的 UI 所在的窗口带。通俗点讲,UIAccess 获取后,具有 WS_EX_TOPMOST 样式的窗口将始终置顶(高于任何应用)。
网络上获取 UIAccess 的一般方法是通过复制特权进程的令牌,并赋予 UIAccess 特权给令牌,然后用这个新的令牌启动进程。
但是,通过我的尝试(可以说是失败的尝试),发现 UIAccess 这个特权必须在进程初始化时使用才有效,为当前进程动态赋予 UIAccess 不能够成功使得窗口置顶。但表现为也具有 UIAccess 特权,因为我通过多种方法检测确信可以动态获取。
最后,UIAccess 只能启动新进程时候赋予,所以需要重启应用。这一点其实有时候是比较麻烦的,因为你的应用必须保存当前的设置,然后注册在重启时恢复状态。
除非你有代码签名(通过程序清单合法地使用最高优先级的 UIAccess),否则 UIAccess 的绕过方法都不是最简单的。