Jump to content
Sign in to follow this  
Batch

Is This A *bug*? (gasp!)

Recommended Posts

Batch

It appears that if you have a RunAsSet statement in your script, and then you try to use Run with the @SW_HIDE option, it will not be hidden:

This works fine and is hidden:

RunWait( "cmd /c cacls c:\temp /T /E /C /G users:C", "", @SW_HIDE )
RunWait( "cmd /c \\server\utils\psshutdown -t 600 -f -r -l", "", @SW_HIDE )

This doesn't have the windows hidden, I see the DOS window appear:

RunAsSet( "user", "domain", "password" )
RunWait( "cmd /c cacls c:\temp /T /E /C /G users:C", "", @SW_HIDE )
RunWait( "cmd /c \\server\utils\psshutdown -t 600 -f -r -l", "", @SW_HIDE )

I have to run the cacls to set permission as well as the wonderful pstool psshutdown under an admin account, but they are not running hidden. I checked the help file and I don't see anything obvious that I'm missing, what the dealie?!

Share this post


Link to post
Share on other sites
Batch

Was it something I said? I've never posted something and had to wait this long for a reply, hehe, what's the deal?

Share this post


Link to post
Share on other sites
scriptkitty

actually I think it is how it is handled. Like a seperate command does the run as set part, and that part is being minimised/hidden.

You run in to this with Dos Commands, if you run say:

Run(@ComSpec &' /c notepad.exe','',@SW_HIDE)

Sorry, I don't have a better answer for ya, but I don't know how microsoft does the runasset precisely.


AutoIt3, the MACGYVER Pocket Knife for computers.

Share this post


Link to post
Share on other sites
Valik

My guess is that it's not a bug, but how Window's works. It probably has to do with the desktop the program is running in and/or whether or not Windows passes along the information to the application.

Share this post


Link to post
Share on other sites
Jos

Batch, I see the same behaviour and don't know why that is....

Heres a simple example:

Opt ("TrayIconHide", 1);0=show, 1=hide tray icon
Opt ("RunErrorsFatal", 0);1=fatal, 0=silent set @error
$USERNAME = "Admin"              ; local admin account name
$PASSWORD = "password"           ; local admin account psw
RunAsSet($USERNAME, @ComputerName, $PASSWORD)
$RC = RunWait(@ComSpec & " /c dir c:\windows\*.* /s", "", @SW_HIDE)
MsgBox(0, 'test', $RC)

A way arround it is to restart the batchfile after the runas and then do the command(s)... like this:

Opt ("TrayIconHide", 1);0=show, 1=hide tray icon
Opt ("RunErrorsFatal", 0);1=fatal, 0=silent set @error
$USERNAME = "Admin"              ; local admin account name
$PASSWORD = "password"           ; local admin account psw
$RUN = 0                       ; run indicator 1=first cycle uninstall   2=install new
If $CMDLINE[0] = 1 Then $RUN = $CMDLINE[1]
If $RUN = 0 Then
   RunAsSet($USERNAME, @ComputerName, $PASSWORD)
  ; start the script program (itself) again but now in Adminmode...so all done tasks will run in Adminmode
   Run('"' & @ScriptFullPath & '" " 1"')
   If @error = 1 Then 
      MsgBox(48, "Error", "cannot start the installation because you are not in Admin mode")    
   EndIf
   Exit
EndIf
$RC = RunWait(@ComSpec & " /c dir c:\windows\*.* /s", "", @SW_HIDE)
MsgBox(0, 'test', $RC)

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     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

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  

×