次の関数は、現在のWindowsユーザーの名前をdomain \ username形式で返します。username @ domain形式で現在のWindowsユーザーの名前を取得するにはどうすればよいですか?
Convert.ToString(WindowsIdentity.GetCurrent().Name);
しかし、[email protected]
形式でユーザー名を取得するにはどうすればよいですか。
EDIT:
答えた全員が同じ基本的な考え方を持っているように私はこの編集に対応しています。
私が理解したところでは、domain\username
という形式から名前を解析し、[email protected]
という名前で構文解析するのは安全ではないと言われています。私はこれがそうであると信じる2つのドメイン名が異なったフォーマットで同じであるという保証がないので。たとえば、私が働いている会社では、domain\username
フォーマットのdomain
の一部は部門別に基づいていますが、[email protected]
では会社名です。それはDNSルックアップを必要とするものです。
このDNSルックアップを実行したAPIがあることを期待していました。私はこの情報を私の元の質問に入れておくべきだったと思う。ごめんなさい。
私のアプリケーションでC#を使用しています。 –
探しているプロパティは、ユーザープリンシパル名(UPN)です。 –
WindowsIdentity.GetCurrent()。Claimsを列挙してみると、UPNが含まれている可能性があります。そうでない場合は、P/Invokeを使用してTranslateName関数を呼び出します。 –