Win32API関数LookupAccountSID()は、SIDに対応する名前を解決できます。ドキュメントによると: LookupAccountSid functionローカル情報のみを使用してSIDからユーザー名を解決します。
のLookupAccountSid関数は最初の既知のSIDのリストをチェックすることにより、指定されたSIDの名前を見つけようとします。指定されたSIDがよく知られているSIDに対応していない場合、この関数は組み込みおよび管理上定義されたローカルアカウントをチェックします。次に、関数はプライマリドメインをチェックします。プライマリドメインで認識されないセキュリティ識別子は、SID接頭辞に対応する信頼されたドメインと照合されます。
ローカルでのみ名前を探す方法はありますか?つまり、関数が呼び出されたPCに名前が見つからない場合、関数はプライマリドメインをチェックする代わりに失敗します。
編集:これはあなたの何であれば明確にするために、私は」
問題を逆転させることができます。SIDがドメインSIDであるかどうかを判断し、そうであれば、それを調べないでください。ドメインSIDは、S-1-5-21で始まり、ドメイン値として[machine SID](http://stackoverflow.com/questions/14113558/)を使用しない*ものです。残っているのは、ビルトインアカウントとローカルアカウントです。免責事項:テストされていません。 –
問題は、ローカルに格納されているドメインユーザーに関する情報を検索することです。ある時点でローカル以外のユーザーがログインしている場合、LookupAccountSidは、コンピュータがオフラインの場合でも正しい名前を返します。 – ggarcia24
これはLSAキャッシュによって管理されます。それには公式なインターフェースはありません。 (mimikatzのように)それをダンプすることができるツールがありますが、それらはハッキング目的のために傾向があり、ほとんどのネットワーク管理者がオープンアームを歓迎していません。ネットワークトラフィックが発生するという事実、ルックアップに時間がかかりそうだという事実、ドメインに関する情報を調べることに対するあなたの懸念はまったく何ですか?ローカルルックアップが決して超えないように、少し時間を置いてルックアップをキャンセルするだけでタイムアウトを処理できます。 –