本当のアカウント名とは!?


■アカウント名を取得する事はFramework2.0以降簡単だと思っていたが、 そんなケースばかりでは無いと言う現実・・・どんな時に発生するか? 例えば、はじめに設定したWindowsのアカウント名を変更した場合などが該当する。 そこで下記の様なコードで比較してみる

 Label1.Text = "1) Environment.UserName"
 Label2.Text = System.Environment.UserName
 Label3.Text = "2) My.User.Name"
 Label4.Text = My.User.Name.Split("\")(1)
 Label5.Text = "3) DirectoryEntry"
 Label6.Text = GetTrueName()
該当のケースであれば、3)は結果が異なるはずです。 1)と2)は、単にユーザーディレクトリ名を持って来ているだけの様子で Windowsのアカウント名を変更しても結果は変わりません。 Microsoftは仕様であると言いきっています。 例え間違って登録してしまっても変更は出来ないと・・・ その場合、新しいアカウントを作りなさいとまで・・・ さて、3)のGetTrueName関数の中身を下記に (System.DirectoryServicesを参照設定する必要があります)
 Function GetTrueName() As String

  Using objdir As DirectoryEntry = _
   New DirectoryEntry("WinNT://" & _
   System.Environment.UserDomainName & "/" & _
   System.Environment.UserName)

   Return objdir.Properties("FullName").Value.ToString()

  End Using

 End Function
上記は、ADのツリー構造から情報を取得しているのですが、 これを応用し、プロパティ「FullName」から本当の名前を取得しているものです。 意外にも情報が少なく辿り着くのに苦戦しましたので、ここに追記。。。


関連リンク(情報源)

http://www.atmarkit.co.jp/fdotnet/dotnettips/642displayname/displayname.html

TOP ▲