【发布时间】:2021-06-02 11:19:17
【问题描述】:
我正在尝试获取“当前活动用户帐户名称”(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");
}
【问题讨论】:
-
那些答案给了我用户名,但我想得到“当前用户帐户名”
-
@.SARKAR 那东西不在那里吗? docs.microsoft.com/dotnet/api/…
-
您在看什么上下文?您正在执行的代码是否使用用户令牌运行(例如,用户是否双击图标或在 CMD 窗口中键入命令名称)?
-
@Flydog57 此代码在脚本中(带有用户令牌)。我的目标是获取“sid”字符串并根据用户在 Windows 应用程序中的特定操作编辑注册表。
标签: c# .net windows user-accounts