关于 MSDN 代码示例,"Enabling and Disabling Privileges"
About the MSDN code example, "Enabling and Disabling Privileges"
msdn文章,在C 中启用和禁用特权,提供了一个代码示例,以显示如何在访问令牌中启用或禁用特权。
我引用了质疑的部分:
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;
Attributes
成员的零值的含义是什么?
根据token_privileges结构的文档,特权的属性可以是以下值的组合:
-
SE_PRIVILEGE_ENABLED
 (在WinNT.h
中是 0x00000002l ) -
SE_PRIVILEGE_ENABLED_BY_DEFAULT
 ( 0x00000001l 在WinNT.h
中) -
SE_PRIVILEGE_REMOVED
 ( 0x00000004l 在WinNT.h
中) -
SE_PRIVILEGE_USED_FOR_ACCESS
 (在WinNT.h
中是 0x80000000l )
因此,我们看不到任何有效常数,值为零。我想,零等于 SE_PRIVILEGE_REMOVED
。
再次,如果零意味着禁用所有特权,我怀疑它是因为可以通过将ADACKTOKENPRIVIEGES()的DisableAllPrivileges
参数设置为TRUE
。
这里有人可以解释零值真的是什么?
禁用的特权之间存在区别,这使您可以稍后再启用它,并且 emoving 从代币中获得特权。删除特权意味着以后再重新启用。
通过零表示未设置SE_PRIVILEGE_ENABLED
位,因此禁用特权。
令牌创建时包含许多特权。默认情况下,SeChangeNotifyPrivilege
在本地安全策略/组策略的"用户权限分配"部分中被称为"绕过遍历检查",默认情况下始终启用,不应永远被禁用(有关详细信息,请参见KB823659)。因此,DisableAllPrivileges
参数实际上并不有用。
用户帐户控制(Windows Vista及以后)取下原始登录令牌,克隆它,并使用SE_PRIVILEGE_REMOVED
标志来创建用于启动Shell的"过滤的令牌"。然后隐藏原始令牌,以便"作为管理员"功能可以使用它来启动程序。
您可以使用Sysinternals Process Explorer看到在该过程中启用的特权。
If SE_PRIVILEGE_REMOVED
等于零,它将被定义。鉴于那里的定义,我建议零值意味着从未启用过特权,或者随后使用/删除:有,从来没有任何令牌特权。
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- 关于 MSDN 代码示例,"Enabling and Disabling Privileges"