我尝试在c#中获取当前登录用户的名称 - 而不是我在Environment.UserName中可以轻松找到的帐户名。 我想枚举MyComputer上的文件夹,就像explorer一样。我怎么能这样做,还是有另一种方法来获得用户的正确名称?
提前致谢。
答案 0 :(得分: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
如果您可以手动确认这些方法中的任何一个返回NEW用户名,那么只需在代码中实现该用户名,即使用WMI调用或注册表访问。
答案 1 :(得分:1)
使用它,
string windowLoging = WindowsIdentity.GetCurrent().Name;
或
string windowsLogin = Page.User.Identity.Name;
或
string windowsLogin = Environment.GetEnvironmentVariable("USERNAME");
答案 2 :(得分: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”是我搜索过的属性。非常感谢。 - Harald Pitro