Jump to content

RunAsSet Password error


Bert
 Share

Recommended Posts

  • Developers

Something like this ?

Opt("RunErrorsFatal", 0) 
Global $UserId,$Password
While 1
    $UserId = InputBox("Username", "Enter Userid", $UserId)
    $Password = InputBox("Password", "Enter Password", "", "*")
    RunAsSet($UserId, @ComputerName, $Password)
    RunWait(@ComSpec & " /c dir ", "", @SW_HIDE)
    If Not @error Then ExitLoop
    MsgBox(4096, "Userid/Password Error", "Userid/Password Error... try again.")
WEnd

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

I tried this, but I haven't tested it.

$LA = _Security__LookupAccountName("$id)
    if $LA[2] = "" then 
        MsgBox(0, "Error", "RACF entered in incorrectly or is not found. Please try again.", 10)
        Return
    EndIf
    if $LA[2] = 1 then 
        $runit = ShellExecute($pt)
        if $runit = @error then 
            MsgBox(0, "Error", "Password entered in incorrectly. Please try again.", 10)
            return
        endif
        exit
    EndIf   
;if all error checks pass, then enable the runasset command.    
EndFunc
Edited by Volly
Link to comment
Share on other sites

  • Developers

I also posted this one before for checking against an AD to validate USer/Psw and optionally a Group... :

$oMyError = ObjEvent("AutoIt.Error", "ComError")
msgbox(0,"Validate",UserValidate(@LogonDomain,"unknown-user","userpwd"))
msgbox(0,"Validate",UserValidate(@LogonDomain,"Okuser","userpwd"))
msgbox(0,"Validate",UserValidate(@LogonDomain,"Okuser","userpwd","groupdoesnotexist"))
msgbox(0,"Validate",UserValidate(@LogonDomain,"Okuser","userpwd","groupexist"))
Exit
; Check Valid User/Password and optionally in a group 
Func UserValidate($domain, $UserName, $Password, $InGroup="")
    Local $NameSpace = ObjGet("WinNT:")
    Local $ADS_SECURE_AUTHENTICATION = 0x0001
    Local $DomObj = $NameSpace.OpenDSObject("WinNT://" & $domain , $UserName, $Password, $ADS_SECURE_AUTHENTICATION)
    If @error <> 0 Then Return 0
    If $InGroup <> "" Then
        $objUser = ObjGet("WinNT://" & $Domain & "/" & $UserName)
        For $oGroup in $objUser.Groups
            If $oGroup.Name = $InGroup Then 
                Return 1
            EndIf
        Next
        Return 0
    EndIf
    Return 1
EndFunc 
;COM Error function
Func ComError()
    If IsObj($oMyError) Then
        $HexNumber = Hex($oMyError.number, 8)
        SetError($HexNumber)
    Else
        SetError(1)
    EndIf
    Return 0
EndFunc  ;==>ComError

:)

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

I'm trying to follow the code, but I'm not sure on how to use it. It looks like it does a check in AD, but then again, I do not know what the ComError does, and the msgboxs at the beginning...confused on that one.

I assume I just need the uservalidate() function. I'm not sure on how to tell when the password is wrong on the return.

Link to comment
Share on other sites

  • Developers

In case you specify just the Userid/Password, the uservalidate() will return 1 when the UserId & Password combination is correct else it will return a 0.

When you add the Group parameter, the uservalidate() will additionally check if the User is part of the specified group. again it will return 1 when that's true else a 0.

The Comerror function is needed to avoid the script to stop working in case of Comm error and required to test the validity of the Userid/pasword line since that will generate a comerror when its invalid. the next line tests for that.

so a simple example to check the userid and password could be (untested):

$oMyError = ObjEvent("AutoIt.Error", "ComError")

If UserValidate(@LogonDomain,$UserId,$psw) then 
 ; User validated 
Else
 ; Invalid User/password combination
EndIf

; Check Valid User/Password and optionally in a group 
Func UserValidate($domain, $UserName, $Password, $InGroup="")
    Local $NameSpace = ObjGet("WinNT:")
    Local $ADS_SECURE_AUTHENTICATION = 0x0001
; Check the userid/password combination and on error return a 0
    Local $DomObj = $NameSpace.OpenDSObject("WinNT://" & $domain , $UserName, $Password, $ADS_SECURE_AUTHENTICATION)
    If @error <> 0 Then Return 0
; Optionally check the group membership
    If $InGroup <> "" Then
        $objUser = ObjGet("WinNT://" & $Domain & "/" & $UserName)
        For $oGroup in $objUser.Groups
            If $oGroup.Name = $InGroup Then 
                Return 1
            EndIf
        Next
        Return 0
    EndIf
    Return 1
EndFunc 
;
;COM Error function
Func ComError()
    If IsObj($oMyError) Then
        $HexNumber = Hex($oMyError.number, 8)
        SetError($HexNumber)
    Else
        SetError(1)
    EndIf
    Return 0
EndFunc;==>ComError
Edited by Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...