首页 > 解决方案 > 如何在 Windows 中正确删除(删除或禁用)权限?

问题描述

我正在尝试编写一个在 Windows 上执行特权操作的安全应用程序(特别是它会更改系统时间)。因此,我要求用户以管理员权限运行此应用程序。作为我想要在程序中做的第一件事之一是从我的访问令牌中删除所有不必要的权限,以限制我稍后引入的任何错误的影响。来自有关该主题的 Microsoft 文档我知道我可以通过 AdjustTokenPrivileges “禁用”这些权限,或者通过 CreateRestrictedToken 创建一个具有“已删除”权限的新访问令牌并使用它重新启动我的应用程序。如果我正确理解这一点,则可以随时重新启用禁用的权限,因此任何受到充分破坏的应用程序都会这样做,而忽略我试图施加的任何限制。另一方面,如果我使用 CreateRestrictedToken 完全删除特权,它们将无法重新添加,这听起来更安全,而且我通常会在“删除特权”一词下想象(这种方式听起来也很麻烦)重新启动等)。

我怀疑这种理解可能是错误的。在 Windows 中删除所有但需要的权限的最合适的方法是什么?

标签: windowssecuritywinapi

解决方案


我的理解确实是错误的。尽管文档声称,您可以AdjustTokenPrivileges()通过将属性设置为字段SE_PRIVILEGE_REMOVED中的适当权限来“轻松”删除权限NewState


推荐阅读