Solved

VBScript/HTA Help! run command line on click

Posted on 2009-04-15
9
4,844 Views
Last Modified: 2012-06-22
Hello,

I'm trying to make an hta that will unlock a users account using joeware's unlock tool. It's an EXE that you run in cmd and give it an attribute. "Unlock.exe unlock . username"

I have been able to get it to open a command window, but now put in the unlock.exe unlock . username with the following code

Sub cmdSubmit
    Const NORMAL_WINDOW = 1
    Set objShell = CreateObject("Shell.Application")
    objShell.ShellExecute "cmd.exe", "%userprofile%\appdata\local\microsoft\windows sidebar\gadgets\teepe.gadget\EXE\Unlock.exe unlock . name", , , NORMAL_WINDOW
End Sub

Any help would be greatly appreciated. Below is my whole code.


<html>

 

<head>

   <title>Woot</title>

 

    <style>

        body

        {

            width: 129;

            height: 203;

            padding: 0;

            margin: 0;

            background-image: url(../IMG/background.png);

            background-repeat: no-repeat;

        }

    .style1 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 11px;

}

    .style2 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 14px;

}

    .style3 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 5px;

}

    </style>

</head>

<body>

<table width='116' border='0' cellspacing='0' cellpadding='0' style='padding-left:10px'>

<tr>

<td>

<div align='center' class='style2'>

  <p><b> Locked Accounts</b></p>

</div></td>

</tr>

<tr>

<td>

<span class="style3"><br></span>

<span class='style1'>

 

 

<script Language="VBScript">

Sub cmdSubmit

    Const NORMAL_WINDOW = 1

    Set objShell = CreateObject("Shell.Application")

    objShell.ShellExecute "cmd.exe", "%userprofile%\appdata\local\microsoft\windows sidebar\gadgets\teepe.gadget\EXE\Unlock.exe unlock . document.test.name.value", , , NORMAL_WINDOW

End Sub

 

	   On Error Resume Next 

 

	   Const ADS_SCOPE_SUBTREE = 2 

 

	   Set objConnection = CreateObject("ADODB.Connection") 

	   Set objCommand =   CreateObject("ADODB.Command") 

 

	   objConnection.Provider = "ADsDSOObject" 

	   objConnection.Open "Active Directory Provider" 

 

	   Set objCommand.ActiveConnection = objConnection 

 

	   objCommand.Properties("Page Size") = 1000 

	   objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 

	   objCommand.CommandText = _ 

	      "SELECT distinguishedName FROM 'LDAP://dc=,dc=,dc=,dc=com' WHERE objectCategory='user'" 

 

	   Set objRecordSet = objCommand.Execute 

	   objRecordSet.MoveFirst 

 

	   Do Until objRecordSet.EOF 

	   strDN = objRecordset.Fields("distinguishedName").Value 

	   Set objUser = GetObject ("LDAP://" & strDN) 

	   strislocked = objuser.isAccountlocked 

	   straccount = objuser.displayName

	   straccount2 = objuser.samAccountName

  	     If strislocked = True Then 

            document.write "<FORM style='margin: 0;' name='test'><input style='margin: 0;' name='name' type='hidden' id='name' value='"+straccount2+"'>"+ straccount +" <a style='margin: 0;' href='#' onclick='cmdSubmit()'>Out</a></form>"

			objRecordSet.MoveNext

 	     Else 

	        objrecordset.MoveNext 

		End If

	   Set objuser = Nothing 

	   Loop 

</script>

</span>

</td>

</tr>

</table>

</body>

</html>

Open in new window

0
Comment
Question by:teepes
  • 6
  • 2
9 Comments
 
LVL 7

Expert Comment

by:sj_hicks
ID: 24153662
A couple options:
1)  Run unlock.exe directly, rather than using CMD.exe
2)  Use the /C (runs unlock then closes cmd): cmd /c unlock.exe....
3)  Use the /K (runs unlock then leaves cmd open): cmd /c unlock.exe....
4)  If this doesn't work, use WScript.Shell.Run:
oShell = CreateObject("WScript.Shell")
oShell.Run <command line>, 1, true

0
 

Author Comment

by:teepes
ID: 24157132
i figured it out. I just made a batch file that i point to, and carry the variable over using the %1.
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 500 total points
ID: 24163232
Hi, you could have also changed this:
    objShell.ShellExecute "cmd.exe", "%userprofile%\appdata\local\microsoft\windows sidebar\gadgets\teepe.gadget\EXE\Unlock.exe unlock . document.test.name.value", , , NORMAL_WINDOW

to this
    objShell.Run "cmd.exe /c ""%userprofile%\appdata\local\microsoft\windows sidebar\gadgets\teepe.gadget\EXE\Unlock.exe"" unlock " & document.test.name.value, 1, True

as long as document.test.name.value returned the username.

Regards,

Rob.
0
 

Author Comment

by:teepes
ID: 24167228
well i got everything working the only problem is that when i have it in my sidebar and click unlock, it unlocks the person but also opens another application window. Any idea on how to make it stop?
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 

Author Comment

by:teepes
ID: 24167238
almost forgot here is the code

<html>

<head>

<hta:application

id="Locked Users"

applicationname="Locked Users"

border="dialog"

SCROLL="no"

caption="yes"

showintaskbar="yes"

singleinstance="yes"

sysmenu="yes"

>

   <title>Woot</title>

   <style>

        body

        {

            width: 129;

            height: 203;

            padding: 0;

            margin: 0;

            background-image: url(../IMG/background.png);

            background-repeat: no-repeat;

        }

    .style1 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 11px;

}

    .style2 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 14px;

}

    .style3 {

	color: #FFFFFF;

	font-family: Calibri;

	font-weight: bold;

	font-size: 5px;

}

    </style>

</head>

<script Language="VBScript">

Sub Window_OnLoad

		RefreshList

        iTimerID = window.setInterval("RefreshList", 10000)

    End Sub
 

Sub cmdSubmit(strtest)

        Set objShell = CreateObject("Wscript.Shell")

        objShell.Run """%userprofile%\appdata\local\microsoft\windows sidebar\gadgets\teepe.gadget\HTML\unlock.bat""" & strtest

End Sub

Sub RefreshList

	   On Error Resume Next 

 

 		ProcessList.InnerHTML = ""

 	

	   Const ADS_SCOPE_SUBTREE = 2 

 

	   Set objConnection = CreateObject("ADODB.Connection") 

	   Set objCommand =   CreateObject("ADODB.Command") 

 

	   objConnection.Provider = "ADsDSOObject" 

	   objConnection.Open "Active Directory Provider" 

 

	   Set objCommand.ActiveConnection = objConnection 

 

	   objCommand.Properties("Page Size") = 1000 

	   objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 

	   objCommand.CommandText = _ 

	      "SELECT distinguishedName FROM 'LDAP://dc=,dc=,dc=,dc=com' WHERE objectCategory='user'" 

 

	   Set objRecordSet = objCommand.Execute 

	   objRecordSet.MoveFirst 

 

 		ProcessList.InnerHTML = "<FORM style='margin: 0;' name='test'>"

	   Do Until objRecordSet.EOF 

	   strDN = objRecordset.Fields("distinguishedName").Value 

	   Set objUser = GetObject ("LDAP://" & strDN) 

	   strislocked = objuser.isAccountlocked 

	   straccount = objuser.displayName

	   straccount2 = objuser.samAccountName

  	     If strislocked = True Then 

            ProcessList.InnerHTML = ProcessList.InnerHTML & straccount & " " & " <a style='color:#CCCCCC; margin: 0;' href='#' onclick='vbscript:cmdSubmit(""" & straccount2 & """)'>(Unlock)</a> <br>"

			objRecordSet.MoveNext

 	     Else 

	        objrecordset.MoveNext 

		End If

	   Set objuser = Nothing 

	   Loop

	   ProcessList.InnerHTML = ProcessList.InnerHTML

End Sub
 

</script>
 

<body>

<table width='116' border='0' cellspacing='0' cellpadding='0' style='padding-left:10px'>

<tr>

<td>

<div align='center' class='style2'>

  <p><b> Locked Accounts</b></p>

</div></td>

</tr>

<tr>

<td>

<span class="style3"><br></span>

<span class='style1'>
 

<span id = "ProcessList"></span>
 

</span>

</td>

</tr>

</table>

</body>

</html>

Open in new window

0
 

Author Comment

by:teepes
ID: 24167482
i got it. I had to take the href out of my onclick. But i have noticed that .hta is not the best thing for vista gadgets. It's a little buggy.
0
 
LVL 65

Expert Comment

by:RobSampson
ID: 24172919
Good work.  They can be a bit buggy, particular with screen refreshes, but they get the job done...

Rob.
0
 

Author Comment

by:teepes
ID: 24173334
LOL i totally revamped it to use HTML,VBSCRIPT, JAVASCRIPT, and my EXE's.No .hta. Thanks for all your help it's running great now! Thanks
0
 

Author Closing Comment

by:teepes
ID: 31570432
Thanks i used your code :)
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

It is a general practice to get rid of old user profiles on a computer  in a LAN environment. As I have been working with a company in a LAN environment where users move from one place to some other place at times. This will make many user profil…
Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now