LsaLookupSids2 函式 (ntsecapi.h)
LsaLookupSids2 函式會查閱對應到安全性標識碼陣列的名稱, (SID) ,並支援因特網提供者身分識別。 如果 LsaLookupSids2 找不到對應至 SID 的名稱,此函式會以字元形式傳回 SID。 您應該使用此函式,而不是 LsaLookupSids 函 式。
語法
NTSTATUS LsaLookupSids2(
[in] LSA_HANDLE PolicyHandle,
[in] ULONG LookupOptions,
[in] ULONG Count,
[in] PSID *Sids,
[out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
[out] PLSA_TRANSLATED_NAME *Names
);
參數
[in] PolicyHandle
Policy 物件的句柄。 此句柄必須具有POLICY_LOOKUP_NAMES訪問許可權。 如需詳細資訊,請參閱 開啟原則物件句柄。
[in] LookupOptions
修改查閱行為的旗標。
[in] Count
指定 Sids 陣列中的 SID 數目。 這也是 Names 陣列中傳回的項目數。 此值必須小於或等於 20480。
[in] Sids
要查閱之 SID 指標陣列的指標。 SID 可以是已知的 SID、使用者、群組或本地組帳戶 SID 或網域 SID。
[out] ReferencedDomains
接收 指向LSA_REFERENCED_DOMAIN_LIST 結構的指標。 這個結構的 Domains 成員是數位,其中包含找到 SID 的每個定義域專案。 每個網域的專案都包含網域的 SID 和一般名稱。 針對 Windows 網域,一般名稱是 NetBIOS 名稱。 對於非 Windows 網域的連結,一般名稱是該網域的識別名稱,或為 NULL。
當您不再需要資訊時,請將傳回的指標傳遞至 LsaFreeMemory。 即使函式失敗並出現錯誤碼STATUS_NONE_MAPPED或STATUS_SOME_NOT_MAPPED,也必須釋放此記憶體
[out] Names
接收 LSA_TRANSLATED_NAME 結構的陣列指標。 Names 陣列中的每個專案都包含 Sids 陣列中對應項目的名稱資訊。 針對帳戶 SID,每個結構的 Name 成員都包含帳戶的隔離名稱。 對於網域 SID,Name 成員無效。
Names 陣列中每個專案的 DomainIndex 成員是 ReferencedDomains 參數所傳回 Domains 陣列中專案的索引。 索引會識別找到 SID 所在網域的 Domains 陣列。
當您不再需要資訊時,請將傳回的指標傳遞至 LsaFreeMemory。 即使函式失敗並出現錯誤碼STATUS_NONE_MAPPED或STATUS_SOME_NOT_MAPPED,也必須釋放此記憶體
傳回值
如果函式成功,則傳回值是下列其中一個 NTSTATUS 值。
傳回碼 | Description |
---|---|
|
某些 SID 無法轉譯。 這是參考層級傳回值。 |
|
找到並成功翻譯所有 SID。 |
如果函式失敗,傳回值為 NTSTATUS 程式碼,可以是下列其中一個值或其中一個 LSA原則函數傳回值。
傳回碼 | Description |
---|---|
|
未翻譯任何 SID。 這是錯誤層級傳回值。 |
|
Sids 陣列參數太大。 |
您可以使用 LsaNtStatusToWinError 函 式,將 NTSTATUS 程式代碼轉換成 Windows 錯誤碼。
備註
旗標LSA_LOOKUP_PREFER_INTERNET_NAMES應該用於因特網帳戶,例如 MicrosoftAccount 和 Azure Active Directory 帳戶。 當指定此旗標時,SID-Name 查閱會以 MicrosoftAccount\foo@outlook.com 或 AzureAD\foo@contoso.com 格式傳回帳戶的 UPN。 針對 Microsoft 帳戶,如果指定此旗標,本機 SAM SID 和因特網 SID 都會傳回 UPN。 如果未指定LSA_LOOKUP_PREFER_INTERNET_NAMES,則會針對 AAD 帳戶傳回 AzureAD\foo 格式的 NT4 樣式名稱。 NT4 樣式名稱是計算機特有的名稱,應該仔細評估其使用方式,並盡可能避免。 如果未指定LSA_LOOKUP_PREFER_INTERNET_NAMES MicrosoftAccounts,則帳戶的本機 SID 會轉譯為本機 SAM 名稱,而因特網 SID 會轉譯為 UPN 名稱。
針對帳戶 SID,Name 成員中傳回的字串是帳戶的隔離名稱 (,例如user_name) 。 如果您需要帳戶的複合名稱 (例如 Acctg\user_name) ,請從 ReferencedDomains 緩衝區取得功能變數名稱,並附加反斜杠和隔離的名稱。
如果 LsaLookupSids2 函式無法轉譯 SID,此函式會使用下列演算法:
- 如果已知 SID 的網域, ReferencedDomains 緩衝區會包含網域的專案, 而且 Names 參數中傳回的字串是帳戶相對標識符的 Unicode 表示法, (RID) 。
- 如果不知道 SID 的網域, Names 參數中傳回的字串是整個 SID 的 Unicode 表示法, 而且 ReferencedDomains 緩衝區中沒有此 SID 的網域記錄。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | ntsecapi.h |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |