正确的方法来获取当前登录的用户Windows 7和XP x86?

时间:2017-05-06 17:32:45

标签: vbscript windows-7 username windows-xp-sp3

编辑:

我使用以下代码来解决我的问题;

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

qry = "SELECT * FROM Win32_Process WHERE Name='explorer.exe'"
For Each p in objWMIService.ExecQuery(qry)
    p.GetOwner user
    UserName = LCase(user)
Next

END OF EDIT

我正在使用为Windows XP设计的现有VBScript,代码如下:

' Get username from registry
UserName = Shell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AltDefaultUserName")
UserName = LCase(UserName)

除非在Windows 7计算机上使用它,否则这种方法非常有效,因为注册表值AltDefaultUserName不存在。

我尝试了以下代码来创建一种获取当前登录用户的通用方法;

UserName = wshNetwork.UserName
UserName = LCase(UserName)

这会返回用户名 system ,可能是因为该脚本是由计算机上运行的服务调用的。

UserName = Shell.ExpandEnvironmentStrings( "%USERNAME%" )
UserName = LCase(UserName)

这会将计算机名返回到最后带有$的值,例如:的 pc123 $

检查Windows 7注册表时,似乎是正确的字符串;

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\LastLoggedOnSAMUser

但这需要删除,因为此处的用户名是:。\ username 域\用户名 我只需要小写的用户名。

如何检查XP注册表值是否存在,脚本将使用Win7注册表值并在 \ 之前删除所有内容?

0 个答案:

没有答案