共用方式為


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_FULLYTRUSTEDSAFER_LEVELID_DISALLOWED 的句柄傳遞至此函式。 這是因為 SAFER_LEVELID_FULLYTRUSTED 不受限制, SAFER_LEVELID_DISALLOWED 不包含令牌。

[in, optional] InAccessToken

要限制的令牌。 如果此參數為 NULL,則會使用目前線程的令牌。 如果目前的線程不包含令牌,則會使用目前進程的令牌。

[out] OutAccessToken

產生的受限制令牌。

[in] dwFlags

指定方法的行為。 此值可以是 NULL 或下列一或多個值,使用位 OR 運算結合。

意義
SAFER_TOKEN_NULL_IF_EQUAL
1 (0x1)
如果 OutAccessToken 參數不比 InAccessToken 參數更嚴格, OutAccessToken 參數會傳回 NULL
SAFER_TOKEN_COMPARE_ONLY
2 (0x2)
InAccessToken 參數指定的令牌會與套用 LevelHandle 參數所指定的限制時所建立的令牌進行比較。 實際上不會建立受限制的令牌。

輸出時, lpReserved 參數的值會指定比較的結果。

SAFER_TOKEN_MAKE_INERT
4 (0x4)
如果設定此旗標,系統不會檢查 AppLocker 規則或套用 軟體限制原則。 針對 AppLocker,此旗標會停用所有四個規則集合的檢查:可執行檔、Windows Installer、腳本和 DLL。

建立必須在安裝期間執行擷取 DLL 的安裝程式時設定此旗標。

您可以使用 GetTokenInformation 來查詢令牌是否存在此旗標。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支援 AppLocker。

SAFER_TOKEN_WANT_FLAGS
8 (0x8)
輸出時, 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
程式庫 Advapi32.lib
Dll Advapi32.dll
API 集合 ext-ms-win-advapi32-safer-l1-1-0 (於 Windows 8)