Win32API函數LookupAccountSID()允許解析與SID對應的名稱。根據文檔: LookupAccountSid function僅使用本地信息解析SID中的用戶名
的功能執行LookupAccountSid嘗試通過第一檢查衆所周知的SID列表中找到名稱爲指定的SID。如果提供的SID與衆所周知的SID不一致,則該功能會檢查內置和管理定義的本地帳戶。接下來,該函數檢查主域。根據與其SID前綴相對應的受信任域來檢查主域未識別的安全標識符。
有什麼方法只在本地查找名稱?也就是說,如果在調用函數的PC中找不到該名稱,則該函數將失敗,而不是檢查主域。
編輯:要清楚,我想解決非本地用戶的名稱,而無需訪問主域(如果該信息已被存儲在本地只檢查)
您可以反轉該問題:確定SID是否爲域SID,如果是,則不要查找它。域SID是以S-1-5-21開頭,然後*不*使用[機器SID](http://stackoverflow.com/questions/14113558/)作爲其域值的域。還有什麼是內置帳戶和本地帳戶。免責聲明:未經測試。 –
問題是我想查找有關本地存儲的域用戶的信息。如果某位非本地用戶已登錄,則即使計算機處於脫機狀態,LookupAccountSid也會返回正確的名稱。 – ggarcia24
這由LSA緩存管理。沒有官方的界面。有些工具可以轉儲它(比如mimikatz),但這些工具往往是爲了黑客的目的,而且大多數網絡管理員都不願意用張開雙臂歡迎。您對於查詢域名信息的確切關注點 - 網絡流量發生的事實,查詢可能需要很長時間的事實,還有其他的事實?您可以簡單地通過在一段時間之後取消查找來處理超時,本地查找永遠不會超過。 –