在早些年写一个桌面软件时,需要管理员权限,但是又不想UAC弹窗,所以一般是直接将UAC的级别拉到最低,或者直接禁用UAC的相关功能。
什么是UAC(User Account Control)
用户帐户控制 (UAC) 是一项 Windows 安全功能,旨在保护操作系统免受未经授权的更改。 当对系统的更改需要管理员级权限时,UAC 会通知用户,从而让用户有机会批准或拒绝更改。 UAC 通过限制恶意代码拥有的以管理员权限执行的访问权限来提高 Windows 设备的安全性。 UAC 使用户能够就可能影响设备稳定性和安全性的操作做出明智的决策。
除非禁用 UAC,否则会阻止恶意软件禁用或干扰 UAC 设置。 UAC 默认处于启用状态,如果具有管理员权限,则可以对其进行配置。
关于UAC这里仅做简单介绍,可以在文末的参考资料里获取关于UAC的更详细的介绍。
绕过UAC弹窗目前流行的有几种方案,这里只介绍基于COM组件的
利用COM组件绕过UAC
原理
COM Elevation Moniker技术允许运行在用户账户控制下的应用提升权限的方法来激活COM类,以提升COM接口权限。
主要用到了ICMLuaUtil接口,它提供了一个ShellExec方法来执行命令,创建指定进程。
使用权限提升COM类的程序必须通过调用CoCreateInstanceAsAdmin函数来创建COM类,CoCreateInstanceAsAdmin参考代码如下:
参考资料:
用户帐户控制工作原理
https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/user-account-control/how-it-works
Bypass UAC(用户账户控制)的几种方法探究及案例
https://www.freebuf.com/articles/network/332619.html
UACME
https://github.com/hfiref0x/UACME
BypassUAC
https://github.com/0xlane/BypassUAC
标签:Windows,com,管理员,UAC,权限,COM,弹窗 From: https://www.cnblogs.com/zhaotianff/p/18394755