2016-07-13 17 views
0

明らかに単純な問題が発生しましたが、問題が発生しました。Cで現在のユーザのFQDNを取得する#

のは、私は2つの信頼されたADドメインを持っているとしましょう: DEMO.internDEMO.trust

私は、Windows認証を使用しています私のアプリでは、現在のユーザーのためのFQDNを取得する必要があります。両方のドメインのユーザーが使用できます。どのユーザーがどのドメインから来たのかを知る必要があります。

もちろん、

Environment.UserDomainName 

または

System.Security.Principal.WindowsIdentity.GetCurrent().Name 

両方のケースでDEMOを返して失敗しました。

System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName 

は、ローカルコンピュータのために私の完全なドメイン名を与えますが、これは現在ログインしているユーザーのためにどのように達成することができます。

は私がいることを知っていますか?私も試してみました

var host = Dns.GetHostEntry(Environment.UserDomainName); 
host.HostName.Dump(); 

私に「そのようなホストは知られていません」というエラーを与えていない成功を収めました。では、ログインしたユーザーの完全なドメイン名を取得するにはどうすればいいですか?DEMO.internだけでなくDEMO

答えて

1

いくつかの研究の後、これは仕事を取得します。

public static class GetUserNameExUtil 
{ 
    #region Interop Definitions 
    public enum EXTENDED_NAME_FORMAT 
    { 
     NameUnknown = 0, 
     NameFullyQualifiedDN = 1, 
     NameSamCompatible = 2, 
     NameDisplay = 3, 
     NameUniqueId = 6, 
     NameCanonical = 7, 
     NameUserPrincipal = 8, 
     NameCanonicalEx = 9, 
     NameServicePrincipal = 10, 
     NameDnsDomain = 12, 
    } 
    [System.Runtime.InteropServices.DllImport("secur32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] 
    public static extern int GetUserNameEx(int nameFormat, StringBuilder userName, ref int userNameSize); 
    #endregion 

    public static string GetUserName(EXTENDED_NAME_FORMAT nameFormat) 
    { 
     if (Environment.OSVersion.Platform != PlatformID.Win32NT) 
     { 
      return null; 
     } 

     StringBuilder userName = new StringBuilder(1024); 
     int userNameSize = userName.Capacity; 
     if (GetUserNameEx((int)nameFormat, userName, ref userNameSize) != 0) 
     { 
      string[] nameParts = userName.ToString().Split('\\'); 
      return nameParts[0]; 
     } 

     return null; 
    } 
    public static string GetUserFullName() 
    { 
     return GetUserName(EXTENDED_NAME_FORMAT.NameDnsDomain); 
    } 
} 
+0

それがうまく働いていません。 iis windows loggonのユーザー名が必要ですが、私は取得していないし、あなたは提案がありますか? @ m3s5 –

関連する問題