LsaLookupNames 函式 (ntsecapi.h)

LsaLookupNames 函式會擷取對應至使用者、群組或本地組名稱陣列 (S) ID 的安全性識別碼

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

LsaLookupNames 函式也可以擷取計算機帳戶。

語法

NTSTATUS LsaLookupNames(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Count,
  [in]  PLSA_UNICODE_STRING         Names,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_SID         *Sids
);

參數

[in] PolicyHandle

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

[in] Count

指定 Names 陣列中的名稱數目。 這也是 Sids 陣列中傳回的項目數。 此值必須小於或等於 1000。

[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_SID 結構的陣列指標。 Sids 陣列中的每個專案都包含 Names 陣列中對應專案的 SID 資訊。

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

傳回值

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

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

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

Description
STATUS_NONE_MAPPED
未翻譯任何名稱。
STATUS_TOO_MANY_NAMES
Names 陣列參數太大。
 

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

備註

警告

例如, (使用完整帳戶名稱,例如,domain_name\user_name) 而不是隔离名称 (,例如user_name) 。 完整名稱明確,並在執行查閱時提供更佳的效能。 此函式也支援 (的完整 DNS 名稱,例如,example.example.com\user_name) 和用户 主體名稱 (UPN) (例如 someone@example.com) 。

警告

如需隔離名稱限制的詳細資訊,請參閱 LsaLookupNames2 檔。

LsaLookupNames 函式會使用下列演算法來轉譯帳戶名稱。

轉譯名稱

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

除了查閱本機帳戶、本機網域帳戶和明確信任的網域帳戶之外, LsaLookupNames 還可以查閱 Windows 樹系中任何網域中任何帳戶的名稱。

範例

如需呼叫此函式的範例,請參閱 在名稱與 SID 之間翻譯

規格需求

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

另請參閱

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID

LSA_UNICODE_STRING

LsaFreeMemory

LsaLookupSids