Jump to content
Baboo85

Send multiple commands line in a CMD window

Recommended Posts

Hi all,

I need to start a script that include:

- admin privileges

- multiple cmd commands

- no bat, no exe, no tmp files created anywhere (especially in the user temp folder)

In a bat file it would be simple, but users shouldn't see what commands I'm sending.

Example of the script:

echo off
cls
echo.
echo I AM A TOOL
echo.
echo NOTE:
echo - note 1
echo - note 2
echo - etc
set USER1=0
set COMPUTER1=0
if /i %username% equ user.user (
set USER1=1
set COMPUTER1=1 )
if /i %username% equ another.user set USER1=1
if /i %computername% equ notebook set COMPUTER1=1
if %USER1% EQU 1 ( 
if %COMPUTER1% EQU 1 (
reg delete "HKLM\SOFTWARE\blablabla" /f
) else ( echo Computer not authorized. Contact assistance.)
) else ( echo User not authorized. Contact assistance.)
echo.
pause
exit

With the send("") is a disaster.

I'm a noob here, so what can I do?

 

EDIT: OR ELSE I explain the situation and what I need, so if there is a simple solution I can use that.

 

SITUATION: our domain users have Users rights on the machine. Some of them need administrator rights.

We create a local user with administrator rights, so that the users must insert username and password when asked to run something with administrator rights.

We have an internal domain group policy that blocks EXE, BAT, COM, TMP files from the user local temp directory, for a security reason (malware). That also blocks most software installation.

But some users are often out of office, away from workplace and in another country, they need a complete control on their computers.

 

WHAT I NEED: I need to check the username and the computer name. If the username is the one with local administrator rights and the computer name is a computer that is qualified to temporary remove the policy, then I need to execute a REG DELETE command with administrator rights.

 

I hope I explained myself.

 

Thank you very much.

Edited by Baboo85

Share this post


Link to post
Share on other sites

Maybe something like:

;~ AdminInfo.ini
;~ [UserName]
;~ Username = Firstname Lastname
;~ [ComputerName]
;~ ComputerName = Domain

#NoTrayIcon
#include <Array.au3>
Global $bUserName = False, $bComputerName = False
Global $sErrorMsg = ""
Global $sAdminInfo = @ScriptDir & "\AdminInfo.ini"
    If FileExists($sAdminInfo) = 0 Then Exit

Global $aUserName = IniReadSection($sAdminInfo, "UserName")
    If @error Then Exit
If _ArraySearch($aUserName, @UserName, 0, 0, 0, 0, 1, 0) > 0 Then $bUserName = True

Global $aComputerName = IniReadSection($sAdminInfo, "ComputerName")
    If @error Then Exit
If _ArraySearch($aComputerName, @ComputerName, 0, 0, 0, 0, 1, 0) > 0 Then $bComputerName = True

MsgBox(0,'', "Username: " & $bUserName & @CRLF & "ComputerName: " & $bComputerName)

If $bComputerName And $bUserName Then
    MsgBox(0,'', 'test')
    RegDelete("HKLM\SOFTWARE\blahblabla", "RegValue")
Else
    If $bComputerName = False Then $sErrorMsg &= @ComputerName & " is not authorised" & @CRLF
    If $bComputerName = False Then $sErrorMsg &= @UserName & " is not authorised"
    MsgBox(4096, "Error", $sErrorMsg)
EndIf

 

Share this post


Link to post
Share on other sites
RegDelete("HKLM\SOFTWARE\blahblabla", "RegValue")

So this is the command to remove a key from the registry? Nice.

Thank you, I'll try this and I'll let you know, because I can't add files (AdminInfo.ini), I need to keep all into the exe file. I need an array.

It's inconvenient, but users shouldn't see anything.

Also I'll add the #RequireAdmin command

Edited by Baboo85

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

  • Similar Content

    • By Burgs
      Greetings,
        I would like to be able to write a script to send commands to the console for creation of Gstreamer pipelines.  I was thinking of something similar to this:
      Local $iPID = Run("C:\Windows\System32\cmd", "", @SW_MAXIMIZE) ;THIS OPENS THE CONSOLE...!!! if $iPID == 0 Then ConsoleWrite(@CRLF & "I DID NOT OPEN CMD...error: " & @error & @CRLF) if $iPID <> 0 Then ConsoleWrite(@CRLF & "I OPENED CMD...!!!" & @CRLF) $hCmd = WinGetHandle("C:\WINDOWS\system32\cmd.exe") if $hCmd <> 0 Then WinActivate($hCmd) ;ensure command console is active... $sOutput = Send("cd C:\gstreamer\1.0\x86_64\bin" & @CRLF, $SEND_RAW) $sOutput = Send("gst-launch-1.0 videotestsrc ! autovideosink" & @CRLF, $SEND_RAW) Sleep(3000) ControlSend($hCmd, "", "", "exit" & @CR) EndIf ;$hCmd NOT "0"... I don't really know if this is the best way to open the console and send commands into it.  I'm also not sure about how to best catch any errors that may occur...likely this needs to be accomplished with the STDOUTREAD command however I've not had experience using it before and therefore would appreciate some advice that anybody may offer. 
      Basically I'm seeking guidance on how to best automate the opening of the console, sending lines of commands to be executed, and handling any potential errors in the execution of those commands...I thank you in advance.  Regards.
    • By XinYoung
      Hello all!   I'm stuck at a seemingly simple part of my script. Using IE, I'm filling out a web form that involves clicking a "Browse" button and selecting a file. Once the file explorer dialog opens, however, I am unable to control it.
      I have a string, which is the name of the file I want, and I'm trying to insert it into the 'File name:' text box in the dialog (which already has focus), but it doesn't get inserted. I've tried ClipPut and Send. 

      What's even more concerning is, when I close the dialog, the string is then pasted into the very next window that has focus, which is often SciTE. It's like that Browse's file open dialog halts all processes. Once it's closed, the script continues.
      ;~ Open a IE window and navigate to the login page. Global $oIE = _IECreate($urlBBLogin) _IELoadWait($oIE) ;~ Recognize the form on this page (login input boxes). Local $oForm = _IEFormGetObjByName($oIE, "login") Local $oTextLogin = _IEFormElementGetObjByName($oForm, "user_id") Local $oTextPass = _IEFormElementGetObjByName($oForm, "password") ;~ Enter the Automation user credentials into the form. _IEFormElementSetValue($oTextLogin, $bbUsername) _IEFormElementSetValue($oTextPass, $bbPassword) ;~ Click the Login button. _IEFormSubmit($oForm) _IELoadWait($oIE) ;~ Navigate to the feedfile upload page. _IENavigate($oIE, $urlUpload) _IELoadWait($oIE) ;~ Click the Browse button Local $Browse = _IEGetObjById($oIE, "feedFile_chooseLocalFile") _IEAction($Browse, "Click") Local $Browse = WinWait("Choose File to Upload") ;~ Open the file we created. WinActivate($Browse) Send($finalFile) Has anyone else experienced this problem? Any ideas to get around it? Am I approaching this the wrong way?
      Any support is greatly appreciated.
      Thank you.
    • By MadhaN
      Hi all,
      I have a csv file as below, I wand to find srno from csv and send corresponding ip and pass to commend cmd prompt. 
      Please guide me to create script .
      srno,name,ip,pass
      1,name1,ip1,pass1
      2,name2,ip2,pass2
       
       
       
       
    • By Rhidlor
      I was wondering if there was a library or something which provides the capability to Send() to inactive windows, and I know what you're thinking, I could just use ControlSend(); the reason I can't use that in this situation is because I need to hold down keys for specific prolonged periods of time. Also activating the window, Send()ing then de-activating the window isn't really an option here, I need the target window to always be in the background. I've looked around the forums for an adequate amount of time and didn't find anything useful, perhaps because the threads were all 10 years old, nevertheless, if anyone has any suggestions they would be greatly appreciated.
      Thanks!
    • By ternal
      Hi,
      The FAQ proposed as a solution to keys getting stuck  to do this command
      ControlSend("", "", "", "text", 0) However this sends "text" to the last active control if I am not mistaken.I have tried this with
      controlsend("", "", "", "{altup}{shiftup}{ctrlup}", 0) This is already a lot better but still fails 1/10
      I cannot allow the script to send "text" to the last active control, and its a bit silly to let it send to somewhere where its harmless no?
      Are there any other methods of unstucking keys?
×
×
  • Create New...