在Windows上运行的C++应用程序有可能在运行时删除权限吗?
例如,如果用户以管理员身份启动我的应用程序,但没有理由以管理员身份运行我的应用程序,我可以以某种方式放弃管理员权限吗?
简而言之,我想在main()函数中编写代码来删除我不需要的特权(例如,对Windows目录的写访问权限)。
发布于 2009-10-07 17:41:57
可以,您可以使用AdjustTokenPrivileges从令牌中删除不需要的和危险的权限。您可以在不立即需要时禁用(稍后可以启用权限),也可以从令牌中完全删除权限。
您还可以通过CreateRestrictedToken创建一个受限令牌,并重新启动使用该受限令牌运行的应用程序。CreateRestrictedToken可用于禁用权限并从令牌中删除组(如Administrators Group)。
您可以使用AdjustTokenGroups从正在运行的进程的令牌中删除管理员组,但我从未在已经运行的进程上尝试过这种方法。
请注意,特权不包括对Windows目录的写访问权限。系统中的资源具有ACL's,它控制谁有权访问。系统和管理员对Windows目录具有写访问权限。
https://stackoverflow.com/questions/1533017
复制相似问题