LsaLookupNames2 函式 (ntsecapi.h)

LsaLookupNames2 函式會擷取指定帳戶名稱 (SID ) 的安全性識別碼LsaLookupNames2 可以查閱 Windows 樹系中任何網域中任何帳戶的 SID。

LsaLookupNames 函式會由 LsaLookupNames2 函式取代。 應用程式應該使用 LsaLookupNames2 函式來確保未來的相容性。

此函式與 LsaLookupNames 函式不同,LsaLookupNames2 會將每個 SID 當做單一元素傳回,而 LsaLookupNames 會將每個 SID 分割成 RID/網域組。

語法

NTSTATUS LsaLookupNames2(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Flags,
  [in]  ULONG                       Count,
  [in]  PLSA_UNICODE_STRING         Names,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_SID2        *Sids
);

參數

[in] PolicyHandle

Policy 物件的句柄。 句柄必須具有POLICY_LOOKUP_NAMES訪問許可權。 如需詳細資訊,請參閱 開啟原則物件句柄

[in] Flags

控制此函式行為的值。 目前已定義下列值。

意義
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
函式只會在本機系統上搜尋未指定網域的名稱。 函式會在遠端系統上搜尋指定網域的名稱。

[in] Count

指定 Names 陣列中的名稱數目。 這也是 Sids 陣列中傳回的項目數。

[in] Names

包含要查閱之名稱之 LSA_UNICODE_STRING 結構的陣列指標。 這些字串可以是使用者、群組或本地組帳戶的名稱,或功能變數名稱。 功能變數名稱可以是 DNS 功能變數名稱或 NetBIOS 功能變數名稱。

如需名稱字串格式的詳細資訊,請參閱。

[out] ReferencedDomains

接收 LSA_REFERENCED_DOMAIN_LIST 結構的指標。 這個結構的 Domains 成員是一個數位列,其中包含找到名稱的每個定義域的專案。 Sids 陣列中每個專案的 DomainIndex 成員是找到名稱之網域的 Domains 陣列專案索引。

當您完成使用傳回的指標時,請呼叫 來釋放它
LsaFreeMemory 函式 。 即使函式因錯誤碼STATUS_NONE_MAPPEDSTATUS_SOME_NOT_MAPPED而失敗,仍必須釋放此記憶體

[out] Sids

接收 LSA_TRANSLATED_SID2 結構的陣列指標。 Sids 陣列中的每個專案都包含 Names 陣列中對應專案的 SID 資訊。

當您完成使用傳回的指標時,請呼叫 來釋放它
LsaFreeMemory 函式 。 即使函式因錯誤碼STATUS_NONE_MAPPEDSTATUS_SOME_NOT_MAPPED而失敗,仍必須釋放此記憶體

傳回值

如果函式成功,函式會傳回下列其中一個 NTSTATUS 值。

Description
STATUS_SOME_NOT_MAPPED
某些名稱無法翻譯。 這是參考層級傳回值。
STATUS_SUCCESS
找到並成功翻譯所有名稱。
 

如果函式失敗,則傳回值是下列 NTSTATUS 值或其中一個 LSA 原則函式傳回值

Description
STATUS_NONE_MAPPED
未翻譯任何名稱。
 

使用 LsaNtStatusToWinError 函式,將 NTSTATUS 程式代碼轉換成 Windows 錯誤碼。

備註

例如, (使用完整帳戶名稱,例如 DomainName\UserName) ,而不是隔離名稱 (,例如 UserName) 。 完整名稱明確,並在執行查閱時提供更佳的效能。 此函式也支援完整 DNS 名稱,例如 範例 (。範例.com\UserName) 和 用戶主體名稱 (UPN) (例如 「某人@範例」.com) 。

隔離名稱的轉譯會導致名稱衝突的可能性,因為同名可能用於多個網域。 LsaLookupNames2 函式會使用下列演算法來轉譯隔離的名稱。

轉譯隔離名稱

  1. 如果名稱是已知名稱,例如 Local 或 Interactive,則函式會傳回對應的已知 安全性標識碼 (SID) 。
  2. 如果名稱是內建網域的名稱,函式會傳回該網域的 SID。
  3. 如果名稱是帳戶網域的名稱,函式會傳回該網域的 SID。
  4. 如果名稱是主要網域的名稱,函式會傳回該網域的SID。
  5. 如果名稱是受信任網域的其中一個名稱,函式會傳回該網域的 SID。
  6. 如果名稱是內建網域中的使用者、群組或本機群組帳戶,函式會傳回該帳戶的 SID。
  7. 如果名稱是本機系統上帳戶網域中的使用者、群組或本地組帳戶,則函式會傳回該帳戶的 SID。
  8. 如果名稱是主要網域中的使用者、群組或本機群組,則函式會傳回該帳戶的 SID。
  9. 在主要網域中查看之後,函式會尋找每個主要網域的信任網域。
  10. 否則,不會翻譯名稱。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 ntsecapi.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID2

LSA_UNICODE_STRING

LsaFreeMemory