在Windows上删除C中的权限

Windows上运行的C应用程序是否可能在运行时删除权限?

例如,如果用户管理员身份启动我的应用程序,但没有理由以管理员身份运行我的应用程序,我可以以某种方式放弃管理员权限?

简而言之,我想在main()函数中编写代码,这个函数放弃了我不需要的权限(例如,在Windows目录下写入访问权限).

是的,您可以使用 AdjustTokenPrivileges从令牌中删除不需要的和危险的特权.您可以禁用,如果不是立即需要(特权可以稍后启用)或从您的令牌完全删除特权.

您也可以通过CreateRestrictedToken创建一个限制令牌,并重新启动运行该限制令牌的应用程序. CreateRestrictedToken可用于禁用权限,并从令牌中删除组(如Administrators组).

您可以使用AdjustTokenGroups从正在运行的进程的令牌中删除管理员组,但是我从未在已经运行的进程中尝试过.

请注意,对Windows目录的写访问权限不受特权覆盖.系统中的资源有ACL’s,它管辖谁可以访问.系统和管理员可以对Windows目录进行写入访问.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...