如何有效地获取当前的 Windows 用户帐户名?

时间:2021-06-02 11:19:17

标签: c# .net windows user-accounts

我正在尝试获取“当前活动用户帐户名”(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");
}

1 个答案:

答案 0 :(得分:1)

我已经解决了我的问题:

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