kjcdude Posted January 2, 2008 Share Posted January 2, 2008 Does autoit ever launch cmd.exe by its self? The reason i ask is because we run autoit in a secure environment that kills any instances of cmd.exe. Normally we don't have a problem with autoit and the program runs fine in the secure envornment. But recently we've been getting random log spam of autoit scripts that are being killed because of cmd.exe, which makes no sense since the script isn't named cmd.exe, but the log clearly states that it's because of cmd.exe. Thanks Link to comment Share on other sites More sharing options...
JustinReno Posted January 2, 2008 Share Posted January 2, 2008 This depends on what your script includes. Link to comment Share on other sites More sharing options...
kjcdude Posted January 2, 2008 Author Share Posted January 2, 2008 The script is full of filegetversion, filegetsize, dirsize, iniwrite, iniread and that's about it, nothing ever executes cmd.exe Link to comment Share on other sites More sharing options...
GEOSoft Posted January 2, 2008 Share Posted January 2, 2008 I would double check the scripts and make sure that none are using Run(@ComSpec ......................). In case someone else is writing AutoIt Scripts then check all of the *.au3 file names to make sure they are scripts that you need. You might also want to work out a method to monitor the log file and try to trap the correct script when it happens. George Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.*** The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number. Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else. "Old age and treachery will always overcome youth and skill!" Link to comment Share on other sites More sharing options...
PsaltyDS Posted January 2, 2008 Share Posted January 2, 2008 (edited) AutoIt won't run cmd.exe unless the script calls for it. You could try this to pop up info about it. This program will loop silently until it sees an instance of cmd.exe running, then it will pop an array of info about that process (see the function header for info):expandcollapse popup#include <array.au3> ; for _ArrayDisplay() While 1 $PID = ProcessExists("CMD.exe") If $PID Then _ArrayDisplay(_ProcessListProperties("CMD.exe"), "CMD.EXE Found, PID=" & $PID) Exit EndIf Sleep(20) WEnd ;=============================================================================== ; Function Name: _ProcessListProperties() ; Description: Get various properties of a process, or all processes ; Call With: _ProcessListProperties( [$Process [, $sComputer]] ) ; Parameter(s): (optional) $Process - PID or name of a process, default is all ; (optional) $sComputer - remote computer to get list from, default is local ; Requirement(s): AutoIt v3.2.4.9+ ; Return Value(s): On Success - Returns a 2D array of processes, as in ProcessList() ; with additional columns added: ; [0][0] - Number of processes listed (can be 0 if no matches found) ; [1][0] - 1st process name ; [1][1] - 1st process PID ; [1][2] - 1st process Parent PID ; [1][3] - 1st process owner ; [1][4] - 1st process priority (0 = low, 31 = high) ; [1][5] - 1st process executable path ; [1][6] - 1st process CPU usage ; [1][7] - 1st process memory usage ; ... ; [n][0] thru [n][7] - last process properties ; On Failure: Returns array with [0][0] = 0 and sets @Error to non-zero (see code below) ; Author(s): PsaltyDS at http://www.autoitscript.com/forum ; Notes: If a numeric PID or string process name is provided and no match is found, ; then [0][0] = 0 and @error = 0 (not treated as an error, same as ProcessList) ; This function requires admin permissions to the target computer. ; All properties come from the Win32_Process class in WMI. ;=============================================================================== Func _ProcessListProperties($Process = "", $sComputer = ".") Local $sUserName, $sMsg, $sUserDomain, $avProcs If $Process = "" Then $avProcs = ProcessList() Else $avProcs = ProcessList($Process) EndIf ; Return for no matches If $avProcs[0][0] = 0 Then Return $avProcs ; ReDim array for additional property columns ReDim $avProcs[$avProcs[0][0] + 1][8] ; Connect to WMI and get process objects $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\cimv2") If IsObj($oWMI) Then ; Get collection of all processes from Win32_Process $colProcs = $oWMI.ExecQuery ("select * from win32_process") If IsObj($colProcs) Then ; For each process... For $oProc In $colProcs ; Find it in the array For $n = 1 To $avProcs[0][0] If $avProcs[$n][1] = $oProc.ProcessId Then ; [n][2] = Parent PID $avProcs[$n][2] = $oProc.ParentProcessId ; [n][3] = Owner If $oProc.GetOwner ($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "\" & $sUserName ; [n][4] = Priority $avProcs[$n][4] = $oProc.Priority ; [n][5] = Executable path $avProcs[$n][5] = $oProc.ExecutablePath ExitLoop EndIf Next Next Else SetError(2) ; Error getting process collection from WMI EndIf ; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process ; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros Local $oRefresher = ObjCreate("WbemScripting.SWbemRefresher") $colProcs = $oRefresher.AddEnum ($oWMI, "Win32_PerfFormattedData_PerfProc_Process" ).objectSet $oRefresher.Refresh ; Time delay before calling refresher Local $iTime = TimerInit() Do Sleep(10) Until TimerDiff($iTime) > 100 $oRefresher.Refresh ; Get PerfProc data For $oProc In $colProcs ; Find it in the array For $n = 1 To $avProcs[0][0] If $avProcs[$n][1] = $oProc.IDProcess Then $avProcs[$n][6] = $oProc.PercentProcessorTime $avProcs[$n][7] = $oProc.WorkingSet ExitLoop EndIf Next Next Else SetError(1) ; Error connecting to WMI EndIf ; Return array Return $avProcs EndFunc ;==>_ProcessListProperties Edit: The function _ProcessListProperties() has a new home in Example Scripts. Please take criticism/suggestions to that topic. Edited May 5, 2008 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now