Thursday, 21 November 2019

login - Windows 7 - VBS Script to change last logged on user


With Windows XP I used to run a VBS script after using a clients computer to set their user account as the last logged on user.


Unfortunately the script no longer works in Windows 7. (Resulting in some users locking out my account when they try to log on and find that their password is not the same as mine!)


Here is an example of the script I was using:


http://www.itsupportguides.com/vbs-scripts/using-vbs-to-set-the-last-user-logged-on-windows-xp


EDIT : Additional Information on our environment


Our environment:



  • UAC Enabled

  • Logging on as 'itsupport' account, which is a member of the Local Administrators group

  • All systems now have Windows 7 Enterprise installed

  • All systems are joined to an Active Directory domain



Answer



Thank you to those that helped with this issue.


After some further research I found that Windows 7 does not use the same 'Winlogon' registry key for storing the last loggedon user, insead it uses


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\LastLoggedOnUser

The second issue I had was allowing making the VBS script run as an elivated user (Administrator) without having to use 'runas' or an elevated command prompt.


After some trial and error I created the following script which successfully changes the last logged on user for domain added Windows 7 workstations.


Hopefully others here will find it helpful - I know I will!


Set Last Loggedon - Win7.vbs


    '--------------
'Start of UAC workaround code

If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")

objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else

'--------------
'Start of code

dim WSHShell
Set WSHShell = Wscript.CreateObject("WScript.Shell")
dim strRegKey
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
strRegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\"

StrUser = InputBox("Please enter in username," & vbCrLf & vbCrLf & "e.g. joe.local", "Set Last logged on", "UserName")
StrDomain = InputBox("Please enter in domain for logon," & vbCrLf & vbCrLf & "e.g. DOMAIN", "Set Logon Domain OR leave blank if a local user account")

If StrDomain = "" then
StrDomain = "."
Else
End If

wshShell.RegWrite strRegKey & "LastLoggedOnUser", StrDomain & "\" & StrUser, "REG_SZ"

WScript.Echo "Setup Completed. Please restart the computer to complete the process"

'--------------
'End of code


'--------------
'End of UAC workaround code

End If

Full Source: Windows 7 - VBS script to change last user logged on user


No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...