首页 > 解决方案 > 如何有效地获取当前的 Windows 用户帐户名?

问题描述

我正在尝试获取“当前活动用户帐户名”(Windows 用户)。

为此,我尝试了下面提到的代码并获得了“当前活动用户帐户名”,但此代码首先获取所有用户列表,然后过滤(获取)“当前活动用户名”。

现在,我正在尝试获取“当前活动用户帐户名称”(Windows 用户),但没有for循环,我试图在 Microsoft 开发人员文档中获得帮助(研究),但我无法找到有用的资源。

SelectQuery userListQuery = new SelectQuery("Win32_UserAccount");
ManagementObjectSearcher userSearcher = new ManagementObjectSearcher(userListQuery);

foreach (ManagementObject envVar in userSearcher.Get())
{
    // get sid string from username (for to acsess user's current_user registry key)
    NTAccount userAccount = new NTAccount(envVar["Name"].ToString());
    SecurityIdentifier sid = (SecurityIdentifier)userAccount.Translate(typeof(SecurityIdentifier));
    string sidString = sid.ToString();

    File.AppendAllText("c:\\outs\\log.txt", " ---- user account  ----" + userAccount + "\n\n");
    File.AppendAllText("c:\\outs\\log.txt", " ---- sid string  ----" + sidString + "\n\n");
}

标签: c#.netwindowsuser-accounts

解决方案


我已经使用以下方法解决了我的问题:

var searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
var collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];

推荐阅读