Sign in to follow this  
Followers 0
usmma

Windows Password Checker

3 posts in this topic

Hello, I am new to the Autoit forums. I work at a military college that needs to keeps students from installing unauthorized software on there pc's. To save me allot of time I was wondering if anyone knew of a script that could check to see if the Admin password has changed? I am pretty sure this can be done with autoit but like i said to save me time I figure i would ask the experts in here. If you have seen one or can writ one for me I would greatly appreciate it. Thanks!

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

They should only be able to change the admin password when they have Administrator level access to the PC.

Its pretty simple to verify the password of the Administrator using this script:

RunAsWait("Administrator",@ComputerName,"test",0,@comspec & " /c echo .",@SystemDir,@SW_HIDE)
If @error then Msgbox(0,"Administrtor password changed","Administrtor password changed")

This is a script to reset the Administrators Name and Password correct:

$AdminUsername = "Administrator"
$AdminPassword = "StayOff"
;
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"); Install a custom error handler
; Get current Admin account
$Admin = GetAdministratorName(@ComputerName)
ConsoleWrite('Current Administrator accountname = ' & $Admin & @LF)
; Rename User
If $Admin <> $AdminUsername Then
    $NewUser = $AdminUsername
    $oUser = ObjGet("WinNT://" & @ComputerName & "/" & $Admin & ",user")
    $oComputer = ObjGet("WinNT://" & @ComputerName)
    $oNewUser = $oComputer.MoveHere($oUser.ADsPath, $NewUser)
; check it rename was successful
    $Admin = GetAdministratorName(@ComputerName)
    ConsoleWrite('New Administrator accountname = ' & $Admin & @LF)
EndIf
; Check/Set Password
RunAsWait($AdminUsername, @ComputerName, $AdminPassword, 0, @ComSpec & " /c echo .", @SystemDir, @SW_HIDE)
If @error Then
    $oUser = ObjGet("WinNT://" & @ComputerName & "/" & $AdminUsername & ",user")
    $oUser.SetPassword($AdminPassword)
    $oUser.SetInfo
    ConsoleWrite('Password reset' & @LF)
Else
    ConsoleWrite('Password OK' & @LF)
EndIf
;
Func GetAdministratorName($ComputerName)
    Dim $UserSID, $oWshNetwork, $oUserAccount
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!//" & $ComputerName & "/root/cimv2")
    $oUserAccounts = $objWMIService.ExecQuery("Select Name, SID from Win32_UserAccount WHERE Domain = '" & $ComputerName & "'")
    For $oUserAccount In $oUserAccounts
        If StringLeft($oUserAccount.SID, 9) = "S-1-5-21-" And _
                StringRight($oUserAccount.SID, 4) = "-500" Then
            Return $oUserAccount.Name
        EndIf
    Next
EndFunc  ;==>GetAdministratorName
;
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    MsgBox(0, "", "We intercepted a COM Error !" & @CRLF & _
            "Number is: " & $HexNumber & @CRLF & _
            "Linenbr is: " & $oMyError.scriptline & @CRLF & _
            "Description is: " & $oMyError.description & @CRLF & _
            "Windescription is: " & $oMyError.windescription)
    SetError(1); something to check for when this function returns
EndFunc  ;==>MyErrFunc

Enjoy,

Jos

Edited by Jos

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Isn't group policies one of the ways to keep this under control?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0