SaferComputeTokenFromLevel 函数 (winsafer.h)
SaferComputeTokenFromLevel 函数使用SAFER_LEVEL_HANDLE指定的限制来限制令牌。
语法
BOOL SaferComputeTokenFromLevel(
[in] SAFER_LEVEL_HANDLE LevelHandle,
[in, optional] HANDLE InAccessToken,
[out] PHANDLE OutAccessToken,
[in] DWORD dwFlags,
[in, out, optional] LPVOID lpReserved
);
参数
[in] LevelHandle
包含 要对输入令牌施加的限制的SAFER_LEVEL_HANDLE。 不要将 LevelId 为 SAFER_LEVELID_FULLYTRUSTED 或 SAFER_LEVELID_DISALLOWED 的句柄传递给此函数。 这是因为 SAFER_LEVELID_FULLYTRUSTED 不受限制, SAFER_LEVELID_DISALLOWED 不包含令牌。
[in, optional] InAccessToken
要限制的令牌。 如果此参数为 NULL,将使用当前线程的标记。 如果当前线程不包含令牌,则使用当前进程的标记。
[out] OutAccessToken
生成的受限令牌。
[in] dwFlags
指定方法的行为。 该值可以是 NULL ,或者通过使用按位 OR 运算组合的以下一个或多个值。
值 | 含义 |
---|---|
|
如果 OutAccessToken 参数没有比 InAccessToken 参数更严格, 则 OutAccessToken 参数返回 NULL。 |
|
InAccessToken 参数指定的标记与应用 LevelHandle 参数指定的限制时创建的标记进行比较。 未实际创建受限令牌。
输出时, lpReserved 参数的值指定比较结果。 |
|
如果设置了此标志,则系统不会检查 AppLocker 规则或应用软件限制策略。 对于 AppLocker,此标志禁用所有四个规则集合的检查:可执行文件、Windows Installer、脚本和 DLL。
在创建安装程序时设置此标志,该程序必须在安装过程中运行提取的 DLL。 可以使用 GetTokenInformation 查询令牌是否存在此标志。 Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持 AppLocker。 |
|
输出时, lpReserved 参数的值指定用于创建受限令牌的标志集。 |
[in, out, optional] lpReserved
如果设置了 SAFER_TOKEN_COMPARE_ONLY 标志,则此参数在输出时指定令牌比较的结果。 输出值为 LPDWORD。 值为 –1 表示生成的令牌的特权将低于 InAccessToken 参数指定的令牌。
如果设置了 SAFER_TOKEN_WANT_FLAGS 标志,并且未设置 SAFER_TOKEN_COMPARE_ONLY 标志,则此参数是一个 LPDWORD 值,该值指定用于创建受限令牌的标志。
返回值
如果函数成功,则为 TRUE;否则为 FALSE。 有关扩展的信息,请调用 GetLastError。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | winsafer.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |
API 集 | 在 Windows 8) 中引入 ext-ms-win-advapi32-safer-l1-1-0 ( |