4

Environment.UserName で簡単に見つけることができるアカウント名ではなく、c# で現在ログインしているユーザーの名前を取得しようとしています。エクスプローラーのように MyComputer のフォルダーを列挙したいと思います。どうすればそれを行うことができますか、またはユーザーの正しい名前を取得する別の方法はありますか?

前もって感謝します。

4

3 に答える 3

2

使用してみてください:

System.Security.Principal.WindowsIdentity.GetCurrent().Name これにより、現在ログインしているユーザーのアカウントとその名前が返されます。

ユーザー名の変更後にそれが機能しない場合、別の方法として、現在のユーザーの SID を取得し、その SID に一致するユーザー名を検索します。

using System.Security.Principal;
string sid = WindowsIdentity.GetCurrent().Owner.ToString();
return new SecurityIdentifier(sid).Translate(typeof(NTAccount)).ToString();

これに失敗した場合は、SID を取得し、WMI またはレジストリを介して一致するユーザーを探します。これを手動で行う方法については、http: //pcsupport.about.com/od/registry/ht/find-user-security-identifier.htmを参照してください。

これらのメソッドのいずれかが新しいユーザー名を返すことを手動で確認できる場合は、WMI 呼び出しまたはレジストリ アクセスのいずれかを使用してコードに実装します。

于 2013-06-27T06:49:55.613 に答える
1

これを使って 、

string windowLoging = WindowsIdentity.GetCurrent().Name;

また

string windowsLogin = Page.User.Identity.Name;

また

string windowsLogin = Environment.GetEnvironmentVariable("USERNAME");
于 2013-06-27T06:46:29.153 に答える
0

@ damienc88あなたのリンクは私を解決策に導きます:

    SelectQuery query = new SelectQuery("Win32_UserAccount", string.Format("Domain='{0}'", Environment.MachineName)); 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
    foreach (ManagementObject mObject in searcher.Get()) 
    { 
        Console.WriteLine((string)mObject["Name"] + "\t" + (string)mObject["FullName"]); 
    } 

「FullName」は私が検索したプロパティです。どうもありがとう。– ハラルド・ピトロ

于 2013-06-28T12:00:26.347 に答える