簡潔版本
如何獲取IADsGroup群的界面STACKOVERFLOW\ITOps?
長版
我正在嘗試使用ADsGetObject函式IADsGroup獲取域中組的介面。
我擁有的唯一資訊:
- 組名:例如
ITOps - 域名:例如
STACKOVERFLOW
該函式采用物件的 LDAP 路徑:
HRESULT ADsGetObject(
[in] LPCWSTR lpszPathName,
[in] REFIID riid,
[out] VOID **ppObject
);
真正的困難在于為域中的組提供實際的LDAP 路徑。例如:
LDAP://STACKOVERFLOW/ITOps失敗 (“指定了無效的 dn 語法”)LDAP://CN=ITOps,DN=STACKOVERFLOW失敗0x80072020 (“發生操作錯誤”)LDAP://CN=ITOps,DC=STACKOVERFLOW失敗0x8007202B (“從服務器回傳了一個參考”)
問題
鑒于:
- 組名(例如“ITOps”)
- 一個域名(例如“STACKOVERFLOW”)
我如何獲得IADsGroup組STACKOVERFLOW\ITOps的介面?
獎金閱讀
- MSDN:與 GetObject 和 ADsGetObject 系結
- MSDN:ADsGetObject 函式
- MSDN:LDAP ADsPath
- MSDN:使用 SID 系結到物件
- MSDN:獲取域可分辨名稱的示例代碼
- Serverfault:獲取域/樹中的 AD 組路徑
- 服務器和用戶組的 LDAP 路徑
- LDAP 路徑的正確語法
- Stackoverflow:查詢本地用戶目錄的 LDAP 路徑和權限?
- MSDN:WinNT ADsPath
- WinNT 與 LDAP
- MSDN:詞匯表WinNT:“Windows NT 命名空間提供程式,支持 Windows NT SAM 帳戶資料庫。WinNT 提供程式也可用于訪問 Active Directory,但它將其公開為平面命名空間。”
- C語言函式:ADsGetObject示例代碼
- MSDN:不支持的 IADsUser 屬性 (“要獲取和/或修改這些屬性,請使用 LDAP 提供程式”)
- MSDN:WinNT 自定義用戶屬性 (“WinNT 提供程式為用戶類提供以下自定義屬性”)
uj5u.com熱心網友回復:
AD 中有幾個物件的唯一識別符號,它們不能都以相同的方式使用,這讓事情有點混亂。
這是該路徑所需的檔案(您已經鏈接到):LDAP ADsPath
這表明 LDAP 路徑應如下所示:
LDAP://HostName[:PortNumber][/DistinguishedName]
和都是可選的HostName,具體取決于您要執行的操作。如果你需要系結到一個特定的物件——這是你想要做的——那么這是強制性的。PortNumberDistinguishedNameDistinguishedName
可分辨名稱是distinguishedName物件的屬性,這就是為什么 Luke 建議您使用 AD Explorer 瀏覽到目錄中的物件并檢查屬性值的原因distinguishedName。DN 是公用名稱 (CN)、每個組織單位 (OU) 和域 DNS 名稱(例如 stackoverflow.com)的串聯,拆分為每個域組件 (DC)。這看起來像這樣:
CN=ITOps,OU=Groups,DC=stackoverflow,DC=com
格式STACKOVERFLOW\ITOps是域的短名稱(正式稱為 NetBIOS 名稱),結合sAMAccountName物件的屬性。此格式通常用于對用戶帳戶進行身份驗證,但不能在 LDAP 路徑中使用。
如果您要將這個組硬編碼到您的代碼中,那么只需查找distinguishedName并使用它。如果您將獲得STACKOVERFLOW\ITOps用戶的格式并需要系結到它,那么您可以:
- 用于
IADsNameTranslate從 轉換ADS_NAME_TYPE_NT4為ADS_NAME_TYPE_1779,或 - 使用搜索過濾器對域執行搜索
(sAMAccountName=ITOps)。要在 C 中執行 LDAP 搜索,請參閱IDirectorySearch. 您仍然需要為搜索提供 LDAP 路徑,但您可以只提供域 DNS 名稱(例如LDAP://stackoverflow.com)。這允許您指定它希望您回傳哪些屬性,因此您可以告訴它您想要distinguishedName. 或者如果您系結物件的目的是讀取其他屬性,那么您可以指定這些屬性并從搜索結果中讀取這些屬性,然后您可以跳過直接系結到物件的下一步。
看起來你打算使用 C ,但你沒有具體說。你在使用 C 嗎?
uj5u.com熱心網友回復:
如果您不知道該dn域的名稱,那么您可以通過以下方式獲取它rootDSE
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/466313.html
