TheBG Posted May 3, 2012 Share Posted May 3, 2012 Is this possible? Creating a toolset for our Windows 7 pc's at work. I'm allowing the tool to run as a local admin account, since domain users do not have admin access. When closing out the application, I need to be able to find all processes running as the local user account, and close them. any thoughts? Link to comment Share on other sites More sharing options...
1957classic Posted May 3, 2012 Share Posted May 3, 2012 This works on mine with Win 7. If @UserName = "username" Then ProcessClose("notepad.exe") EndIf Link to comment Share on other sites More sharing options...
TheBG Posted May 3, 2012 Author Share Posted May 3, 2012 thanks, but that would close processes of @Username, which is the user logged on to the desktop. it doesn't effect the processes (run as user) running as another user. Link to comment Share on other sites More sharing options...
1957classic Posted May 3, 2012 Share Posted May 3, 2012 My apologizes TheBG. After reading your post again, I was thinking of something else. I have Guest users that have to be encouraged to log off after a preset amount of time. Link to comment Share on other sites More sharing options...
Xenobiologist Posted May 4, 2012 Share Posted May 4, 2012 (edited) Do you mean - kill all processes of a UserString shown in cloumn 3? expandcollapse popup#include <array.au3>; Only for _ArrayDisplay() $avProcProps = _ProcessListProperties() _ArrayDisplay($avProcProps, "$avProcProps") ;=============================================================================== ; 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 ; [1][8] - 1st process creation date/time = "MM/DD/YYY hh:mm:ss" (hh = 00 to 23) ; ... ; [n][0] thru [n][8] - 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 ; Date/Version: 05/05/2008 -- v1.0.0 ; 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][9] ; Connect to WMI and get process objects $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & $sComputer & "rootcimv2") 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 $sObjName = ObjName($oProc, 1) If @error Then ContinueLoop; Skip if process no longer exists ; 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 ; [n][8] = Creation date/time Local $dtmDate = $oProc.CreationDate If $dtmDate <> "" Then $dtmDate = StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & _ StringLeft($dtmDate, 4) & " " & _ StringMid($dtmDate, 9, 2) & ":" & _ StringMid($dtmDate, 11, 2) & ":" & _ StringMid($dtmDate, 13, 2) EndIf $avProcs[$n][8] = $dtmDate 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 ; [n][6] = CPU usage $avProcs[$n][6] = $oProc.PercentProcessorTime ; [n][7] = memory usage $avProcs[$n][7] = $oProc.WorkingSet ExitLoop EndIf Next Next Else SetError(1); Error connecting to WMI EndIf ; Return array Return $avProcs EndFunc ;==>_ProcessListProperties Edited May 4, 2012 by Xenobiologist Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
TheBG Posted May 4, 2012 Author Share Posted May 4, 2012 why, yes! that's what I'm looking for. Link to comment Share on other sites More sharing options...
TheBG Posted May 7, 2012 Author Share Posted May 7, 2012 can you help me clean this up to find the process owner and kill them. my attempts have not been successful 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