ユーザーのフル・ネーム(表示名)を取得するには?[C#、VB].NET TIPS

» 2007年09月06日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 Windowsのユーザーはユーザー名(ログオン時に使用されるアカウント名)により識別されるが、ユーザー情報の一部としてそのユーザーの「フル・ネーム」を設定することができる。これは「表示名」とも呼ばれ、例えばWindows XPなどでは、[スタート]メニューの一番上の部分でユーザーの名前*を表示するのに使用されている。

* フル・ネームが設定されていない場合には[スタート]メニューにもユーザー名が表示される。フル・ネームの設定内容は「net user ユーザー名」や「net user ユーザー名 /domain」などのコマンドにより「フル ネーム」の項目から確認できる(前者はローカル、後者はドメインの情報をそれぞれ表示)。


 本稿では、このフル・ネーム(表示名)をプログラムで取得する方法について解説する。

ユーザー名/ドメイン名の取得

 フル・ネームを取得するには、ユーザー名とそのユーザーが登録されているドメインの名前(PCがドメインに参加していない場合にはコンピュータ名)がまず必要になる。

 これらについては取得のためのプロパティがEnvironmentクラス(System名前空間)に用意されており、現在のユーザーのユーザー名は、EnvironmentクラスのUserNameプロパティから取得できる。

 同様に、そのユーザーが属するドメインの名前(PCがドメインに参加していない場合にはコンピュータ名)は、EnvironmentクラスのUserDomainNameプロパティから取得できる。

 以下にその記述例を示す。

string uName  = Environment.UserName;
string domain = Environment.UserDomainName;

Dim uName As String  = Environment.UserName
Dim domain As String = Environment.UserDomainName

Environmentクラスによるユーザー名/ドメイン名の取得(上:C#、下:VB)

フル・ネーム(表示名)の取得

 フル・ネームに関しては、それを直接取得できるプロパティなどは用意されておらず、ユーザー名/ドメイン名を用いてActive Directoryに問い合わせる必要がある(ただし、必ずしもActive Directoryに参加している必要はない)。

 Active Directoryへの問い合わせには、ADSI(Active Directory Service Interfaces)という仕組みがWindowsに用意されているが、.NET Frameworkのクラス・ライブラリでは、DirectoryEntryクラス(System.DirectoryServices名前空間)がこのADSIを実装している。

 以下のコードはドメイン「myDomain」のユーザー「myName」のフル・ネームを取得するためのコード例である。

string path = "WinNT://myDomain/myName";

DirectoryEntry dirEnt = new DirectoryEntry(path)
string dName = dirEnt.Properties["FullName"].Value.ToString();

Dim path As String = "WinNT://myDomain/myName"

Dim dirEnt As DirectoryEntry = New DirectoryEntry(path)
Dim dName As String = dirEnt.Properties("FullName").Value.ToString()

DirectoryEntryクラスによるユーザーのフル・ネームの取得(上:C#、下:VB)
ここではドメイン「myDomain」のユーザー「myName」のフル・ネームを取得している。

 Active Directoryはツリー構造で情報を格納しており、DirectoryEntryクラスでは特定のエントリ(ノード)の位置を「WinNT://〜」の形式で指定できる。各エントリはプロパティのセットであり、Propertiesプロパティを使って各プロパティの値を取得できる。

フル・ネームを表示するサンプル・プログラム

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。