从网络计算机上启用智能卡的登录中读取windows用户名

read windows username from smart card-enabled login on network computer

本文关键字:读取 windows 用户 登录 网络计算机 启用 智能卡      更新时间:2023-09-26

我正在为我的办公室构建一个HTA应用程序。我们在Windows7上使用IE 9。我已经找到了如何通过javascript和VBA检索用户名,但我有一个问题。我们用智能卡登录我们的网络,我们的用户名只是数字。这些数字基本上是员工人数。因此,当我从本地环境变量中获得用户名时,它只是一个数字,这对我没有任何好处。甚至我们的用户文件夹也与我们的号码相同。有趣的是,当您单击"开始"菜单时,在顶部的右栏中,您的用户名通常会出现,这是我们的实际名称加上我们的工作中心。这正是我需要的信息,但我不知道它来自哪里。可能是网络脚本插入了此信息?即使你点击它(通常会将你带到用户文件夹),顶部的地址也与"开始"菜单中的地址完全相同。

我试着在窗口注册表中搜索我的名字,我能想到的最好的解决方案(但仍远未实现)是读取Microsoft Office注册表中的用户名键值。现在,每台电脑都应该有Office,但我一点也不喜欢这种方法。

我们的名字也存储在我们的智能卡上,但我想这不是我可以从应用程序中轻松读取的。

有人知道我如何提取我正在寻找的信息吗?

您需要查询ActiveDirectory以获取用户详细信息。您有用户登录,因此检索其他用户属性很容易。

您可以尝试使用此答案中的脚本VBA检索与登录用户名关联的用户的名称,但我建议您在服务器端执行此操作。只需在IIS 上打开Windows身份验证

要查看信息是否可用,请将这些命令复制到命令提示符中。他们中的任何一个都有你想要的吗。
wmic path Win32_Account get /format:list
wmic path Win32_Group get /format:list
wmic path Win32_GroupInDomain get /format:list
wmic path Win32_GroupUser get /format:list
wmic path Win32_SystemAccount get /format:list
wmic path Win32_SystemUsers get /format:list
wmic path Win32_UserAccount get /format:list

如果你知道你想要的用户名,请在注册表中搜索。如果你的名字是fred,则键入Run dialog(Winkey+R)

reg query hkcu /f "fred" /s>"%userprofile%'desktop'reg.txt"

它将结果放入桌面上的txt文件中。

如果在"开始运行"中键入cmd/k,会发生什么情况。