Jump to content

bluechipps

Members
  • Posts

    15
  • Joined

  • Last visited

About bluechipps

  • Birthday 03/07/1985

Profile Information

  • Location
    Texas
  • Interests
    scripting 24/7!!! j/k

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

bluechipps's Achievements

Seeker

Seeker (1/7)

0

Reputation

  1. Has anyone successfully been able to compile version 2.3 from GitHub? I really need those fixes and can't tell you how many times I've tried. So many errors with the 2 versions of VS that I have and has just been impossible to try and bypass all the incompatibilities and still produce a library that functions properly Edit: Grabbed old source for 2.2 and found a copy of VS2010 Professional lying around. Manually fixed the bug with FFColorCount and finally got it compiled and working! I'd post my dlls but I think you should compile yourself for safety reasons
  2. Thanks I will make a batch file to switch between versions then.
  3. Sorry I rarely give up attempts to fix things like this but I've already spent 4 hours trying different methods and suggestions. Here is what I'd like to do. - Make 3.3.13.1 the default/production/primary installed au3 version, like as if it were no longer in beta. Yes I'm aware that this may go against some people's religion around here and for that I appologize. - F5 and Ctrl+F7 to run/compile it. I am prepared to write and install yet another windows service to monitor for scite active window and forcefully take over these hotkeys if I have to. - Explorer context menus and "open with" to use 3.3.13.1 - Also curious how to alter the defaults for au3wrapper Ideally of course I'm hoping there is just one granddaddy config variable or script that will fix all my problems and just swap the prod and beta versions just like back in the day, but if not thats fine I've come to you now fully prepared to do things the hard way as long as it will work.
  4. hey thanks for bumping this, really helpful code and just what i been looking for
  5. Thank you thank you! Spent all day trying to figure out why it wasn't working. I could get it working on same server using a simple vb script with same parameters, but _AD_Open() kept throwing errors like yours.
  6. Just wanted to thank you for sharing your AIOCR code, your code is to-the-point and doesn't use any crazy advanced methods that I could never understand fully... what i mean is, thanks, ive learned a lot!
  7. since someone has already bumped this, please allow me to thank you for your work, very very handy!
  8. thanks for this, one small thing i ended up adding to the GUI example though added at the end of the script just underneath "WEnd" _GUICtrlListView_SetColumnWidth($hListView,0,$LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($hListView,1,$LVSCW_AUTOSIZE) added directly above your "While 1" loop _GUICtrlTreeView_Sort($hTreeView)
  9. yes this most likely has been done elsewhere but i would not have stumbled on it as i have on yours very useful and i can definitely use this, thanks a bunch
  10. here ya go #include <WindowsConstants.au3> #include <EditConstants.au3> #include <GUIConstants.au3> #include <GuiTreeView.au3> #Include <GuiListView.au3> #Include <GuiListBox.au3> #include <Array.au3> #include <File.au3> Opt("TrayIconHide", 1) Dim $program, $hostlist, $btnExecute, $gui, $tListView Global Const $Cursor_ARROW = 2 Global Const $wbemFlagReturnImmediately = 0x10 Global Const $wbemFlagForwardOnly = 0x20 Global $gui, $tGui, $tListView, $ExecStatWin $gui = GUICreate("Remote - Remote Execution Tool", 400, 300, -1, -1) $btnExecute = GUICtrlCreateButton("Execute", 205, 243, 90, 30) GUICtrlSetState(-1, $GUI_DISABLE) $btnQuit = GUICtrlCreateButton("Quit", 305, 243, 90, 30) $tabs = GUICtrlCreateTab(5, 0, 390, 234) $tabHosts = GUICtrlCreateTabItem("Hosts") $hostlist = GUICtrlCreateList("", 10, 27, 290, 201) $btnAdd = GUICtrlCreateButton("Add", 305, 28, 83, 22) $btnRemove = GUICtrlCreateButton("Remove", 305, 58, 83, 22) $btnBrowse = GUICtrlCreateButton("Browse", 305, 88, 83, 22) $btnClear = GUICtrlCreateButton("Clear", 305, 118, 83, 22) $btnLoad = GUICtrlCreateButton("Load", 305, 175, 83, 22) $btnSave = GUICtrlCreateButton("Save", 305, 205, 83, 22) $tabExecute = GUICtrlCreateTabItem("Execute") $label0 = GUICtrlCreateLabel("* = Optional", 320, 32, 75, 22) $label1 = GUICtrlCreateLabel("Executable: ", 26, 60, 75, 22) $program = GUICtrlCreateInput("", 90, 57, 250, 22, $ES_READONLY + $ES_AUTOHSCROLL) $btnProgram = GUICtrlCreateButton("...", 345, 57, 22, 22) $label2 = GUICtrlCreateLabel("* Working Dir: ", 16, 100, 80, 22) $directory = GUICtrlCreateInput("", 90, 97, 250, 22, $ES_READONLY + $ES_AUTOHSCROLL) $btnDir = GUICtrlCreateButton("...", 345, 97, 22, 22) $label3 = GUICtrlCreateLabel("* Arguments: ", 22, 140, 80, 22) $arguments = GUICtrlCreateInput("", 90, 137, 250, 22) $label4 = GUICtrlCreateLabel("Context: ", 44, 180, 80, 22) $context = GUICtrlCreateCombo("", 90, 177, 120, 22) GUICtrlSetData(-1, "Interactive|Non-Interactive|System|Interactive System|Limited", "Interactive") $btnTestLocal = GUICtrlCreateButton("Test Local", 250, 177, 90, 22) GUICtrlSetState(-1, $GUI_DISABLE) $check = GUICtrlCreateButton("Check", 250, 200, 90, 22) $information = GUICtrlCreateTabItem("Information") $Delltag = GUICtrlCreateButton("DELL TAG", 20, 38, 90, 27) GUICtrlCreateLabel("Retrieve(s) a DELL Service TAG.", 125, 45) $SystemInfo = GUICtrlCreateButton("SystemInfo", 20, 70, 90, 27) GUICtrlCreateLabel("Retrieve(s) a information list from remote host.", 125, 77) $Software = GUICtrlCreateButton("Software", 20, 102, 90, 27) GUICtrlCreateLabel("Retrieve(s) a software list from remote host.", 125, 109) $hardware = GUICtrlCreateButton("Hardware", 20, 134, 90, 27) GUICtrlCreateLabel("Retrieve(s) a hardware list from remote host.", 125, 141) $Serials = GUICtrlCreateButton("Serials", 20, 166, 90, 27) GUICtrlCreateLabel("Retrieve(s) software serials from remote host.", 125, 173) $RDP = GUICtrlCreateTabItem("RDP") $RDPconsole = GUICtrlCreateButton("RDP",20, 38, 90, 27) GUICtrlCreateLabel("Create a RDP session to remote host.", 125, 45) $VNC = GUICtrlCreateButton("VNC", 20, 70, 90, 27) GUICtrlCreateLabel("Connect to any VNC Client.", 125, 77) $Status = GUICtrlCreateTabItem("Manage") $Tasklist = GUICtrlCreateButton("Task List", 20, 38, 90, 27) GUICtrlCreateLabel("View/change the tasklist with all made orders.", 125, 45) $Manage = GUICtrlCreateButton("Manage", 20, 70, 90, 27) GUICtrlCreateLabel("Manage the user(s) Computer(s).", 125, 77) $Explore = GUICtrlCreateButton("Explore", 20, 102, 90, 27) GUICtrlCreateLabel("Explore the user(s) local HD('s).", 125, 109) $Discontinued = GUICtrlCreateButton("Discontinued", 20, 134, 90, 27) GUICtrlCreateLabel("List from computer(s) if the update didn't continued", 125, 141) $Status = GUICtrlCreateTabItem("Status") $shutdown = GUICtrlCreateButton("Shutdown", 20, 38, 90, 27) GUICtrlCreateLabel("Send request shutdown remote host.", 125, 45) $Restart = GUICtrlCreateButton("Restart", 20, 70, 90, 27) GUICtrlCreateLabel("Send request restart remote host.", 125, 77) $Wol = GUICtrlCreateButton("WOL", 20, 102, 90, 27) GUICtrlCreateLabel("Send request Wake On Lan remote host.", 125, 109) $Clientstatus = GUICtrlCreateButton("Status", 20, 134, 90, 27) GUICtrlCreateLabel("Retrieve(s) list with online and Ofline computers.", 125, 141) GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $btnQuit Then If WinActive("Execution Status") Then GUISwitch($tGui) GUIDelete() Else FileDelete(@WindowsDir & "\system32\psexec.exe") Exit EndIf EndIf If $msg = $btnAdd Then $hosttoadd = InputBox("Hostname:", "Enter a hostname.", "", "", 200, 120) If $hosttoadd Then _GUICtrlListBox_AddString($hostlist, StringUpper($hosttoadd)) CheckExec() EndIf EndIf If $msg = $btnBrowse Then _Main() EndIf If $msg = $btnClear Then _GUICtrlListBox_ResetContent($hostlist) CheckExec() EndIf If $msg = $btnDir Then $wrkDir = FileSelectFolder("Working Directory", "C:\") If $wrkDir <> "" Then GUICtrlSetData($directory, $wrkDir) EndIf If $msg = $btnExecute Then $ExecStatWin = ExecStatusWin() GUICtrlSetState($btnExecute, $GUI_DISABLE) For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" $execfilevar = GUICtrlRead($program) If $execfilevar <> "" Then $contextvar = GUICtrlRead($context) $wrkdirvar = GUICtrlRead($directory) $argsvar = GUICtrlRead($arguments) ExecStatus($i, $hostnamevar, "Attempting connection...") If Ping($hostnamevar) Then ExecStatus($i, $hostnamevar, "Executing...") $psexecpath = GenPSEXEC($hostnamevar) ExecMethod($psexecpath, $hostnamevar, $execfilevar, $contextvar, $wrkdirvar, $argsvar) ExecStatusInfo($i, $hostnamevar) FileDelete($psexecpath) Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf EndIf Next EndIf If $msg = $VNC Then vnc() EndIf If $msg = $RDPconsole Then RDPconsole() EndIf If $msg = $btnLoad Then $wrkfile = FileOpenDialog("Load Hostlist", @WorkingDir, "Text files (*.txt)") If $wrkfile <> "" Then $linecount = _FileCountLines($wrkfile) If FileReadLine($wrkfile, 1) = "<RemoteIt Hostlist>" Then _GUICtrlListBox_ResetContent($hostlist) For $i = 2 To $linecount - 1 _GUICtrlListBox_AddString($hostlist, FileReadLine($wrkfile, $i)) Next FileClose($wrkfile) Else MsgBox(0, "Not a valid host list.", "Please use host lists saved with Remote It.") EndIf CheckExec() EndIf EndIf If $msg = $SystemInfo Then SystemInfo() EndIf If $msg = $Manage Then Manage() EndIf If $msg = $Explore Then Explore() EndIf If $msg = $Tasklist Then EndIf If $msg = $check Then GUICreate("Check list", 350, 215) $checkCNRegistry = GUICtrlCreateCheckbox ("Registry", 10, 10, 120, 20) $checkCNFile = GUICtrlCreateCheckbox ("File", 70, 10, 120, 20) $checkCNFolder = GUICtrlCreateCheckbox ("Folder", 130, 10, 120, 20) GUISetState() While 2 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete() ExitLoop EndSelect WEnd EndIf If $msg = $btnProgram Then $exec = FileOpenDialog("Executable", @WorkingDir, "Executables (*.exe)|Registry Files (*.reg)") If $exec <> "" Then GUICtrlSetData($program, $exec) GUICtrlSetState($btnTestLocal, $GUI_ENABLE) CheckExec() EndIf EndIf If $msg = $btnRemove Then $idx = _GUICtrlListBox_GetCurSel($hostlist) If $idx > -1 Then _GUICtrlListBox_DeleteString($hostlist, $idx) CheckExec() EndIf If $msg = $btnSave Then $listcount = _GUICtrlListBox_GetCount($hostlist) If $listcount <> 0 Then $wrkfile = FileSaveDialog("Save Hostlist", @DesktopDir, "Text files (*.txt)", 16, "hosts.txt") If $wrkfile <> "" Then If FileExists($wrkfile) Then FileDelete($wrkfile) If StringLeft(StringRight($wrkfile, 4), 1) <> "." Then $wrkfile = $wrkfile & ".txt" FileWriteLine($wrkfile, "<RemoteIt Hostlist>") Local $strExport For $i = 0 To $listcount - 1 FileWriteLine($wrkfile, _GUICtrlListBox_GetText($hostlist, $i)) Next FileWriteLine($wrkfile, "<----------------->") EndIf EndIf EndIf If $msg = $btnTestLocal Then $hostnamevar = "127.0.0.1" $psexecvar = GenPSEXEC($hostnamevar) $execfilevar = GUICtrlRead($program) If $execfilevar <> "" Then $contextvar = GUICtrlRead($context) $wrkdirvar = GUICtrlRead($directory) $argsvar = GUICtrlRead($arguments) $psexecpath = GenPSEXEC($hostnamevar) ExecMethod($psexecvar, $hostnamevar, $execfilevar, $contextvar, $wrkdirvar, $argsvar) FileDelete($psexecvar) EndIf EndIf WEnd Func CheckExec() If GUICtrlRead($program) <> "" And _GUICtrlListBox_GetCount($hostlist) > 0 Then GUICtrlSetState($btnExecute, $GUI_ENABLE) Else GUICtrlSetState($btnExecute, $GUI_DISABLE) EndIf EndFunc;==>CheckExec Func Manage() $ExecStatWin = ExecStatusWin() For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" EndIf If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" ExecStatus($i, $hostnamevar, "Attempting connection...") EndIf If Ping($hostnamevar) Then ExecStatus($i, $hostnamevar, "Executing...") Run(@ComSpec & ' /c ' & "compmgmt.msc /computer=\\" & $hostnamevar, @TempDir, @SW_HIDE) ExecStatus($i, $hostnamevar, "Compleet") Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf Next EndFunc;==>Manage Func Explore() $ExecStatWin = ExecStatusWin() For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" EndIf If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" ExecStatus($i, $hostnamevar, "Attempting connection...") EndIf If Ping($hostnamevar) Then ExecStatus($i, $hostnamevar, "Executing...") Run(@ComSpec & ' /c ' & "start \\" & $hostnamevar & "\C$", @TempDir, @SW_HIDE) ExecStatus($i, $hostnamevar, "Compleet") Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf Next EndFunc;==>Explore Func SystemInfo() $ExecStatWin = ExecStatusWin() For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" EndIf If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" ExecStatus($i, $hostnamevar, "Attempting connection...") EndIf If Ping($hostnamevar) Then ExecStatus($i, $hostnamevar, "Executing...") ShellExecute("msinfo32.exe", " /computer \\" & $hostnamevar) ExecStatus($i, $hostnamevar, "Compleet") Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf Next EndFunc;==>SystemInfo Func DispComputers($arrComputers) Dim $tTreeArr[1] $tGui = GUICreate("Browse for Hosts", 250, 322, -1, -1, "", "", $gui) $tTree = GUICtrlCreateTreeView(5, 5, 235, 258, BitOR(256, 55)) $tSelectAll = GUICtrlCreateButton("Select All", 85, 270, 75, 20) $tDeSelectAll = GUICtrlCreateButton("Deselect All", 165, 270, 75, 20) $tOKBtn = GUICtrlCreateButton("OK", 5, 270, 75, 20) GUICtrlSetState(-1, $GUI_FOCUS) For $i = 0 To UBound($arrComputers) - 1 $tTreeArr[$i] = GUICtrlCreateTreeViewItem($arrComputers[$i], $tTree) ReDim $tTreeArr[$i + 2] Next $tVarTreeCount = _GUICtrlTreeView_GetCount($tTree) GUISetState(@SW_SHOW, $tGui) While 1 $msg = GUIGetMsg() If $msg = $tSelectAll Then For $i = 0 To $tVarTreeCount - 1 GUICtrlSetState($tTreeArr[$i], $GUI_CHECKED) Next EndIf If $msg = $tDeSelectAll Then For $i = 0 To $tVarTreeCount - 1 GUICtrlSetState($tTreeArr[$i], $GUI_UNCHECKED) Next EndIf If $msg = $tOKBtn Then Local $tStrSelectedHosts For $i = 0 To $tVarTreeCount - 1 If BitAND(GUICtrlRead($tTreeArr[$i]), $GUI_CHECKED) Then $tStrSelectedHosts = $tStrSelectedHosts & GUICtrlRead($tTreeArr[$i], 1) & "," EndIf Next GUIDelete($tGui) $tArrSelectedHosts = StringSplit($tStrSelectedHosts, ",") _ArrayDelete($tArrSelectedHosts, 0) _ArrayDelete($tArrSelectedHosts, UBound($tArrSelectedHosts) - 1) Return $tArrSelectedHosts EndIf WEnd EndFunc;==>DispComputers Func ExecMethod($psexecloc, $hostname, $execfile, $context, $wrkDir = "", $args = "", $debug = False) $strExe = $psexecloc $strExe = $strExe & " \\" & $hostname Select Case $context = "Interactive" $strExe = $strExe & " -i -high " Case $context = "Non-Interactive" $strExe = $strExe & " " Case $context = "System" $strExe = $strExe & " -s " Case $context = "Interactive System" $strExe = $strExe & " -s -i " Case $context = "Limited" $strExe = $strExe & " -l " EndSelect $strExe = $strExe & "-d -c -f " If $wrkDir <> "" Then $strExe = $strExe & "-w " & $wrkDir $strExe = $strExe & Chr(34) & $execfile & Chr(34) If $args <> "" Then $strExe = $strExe & " " & $args If $debug <> False Then MsgBox(0, "exec cmd", $strExe) ClipPut(@ComSpec & " /c " & $strExe & " 2> C:\psexec.Log") Else RunWait(@ComSpec & " /c " & $strExe & " 2> C:\" & $hostname & "psexec.Log", "", @SW_HIDE) EndIf EndFunc;==>ExecMethod Func ExecStatus($indx, $strHost, $strStatus, $strResult = "") _GUICtrlListView_DeleteItem($tListView, $indx) _GUICtrlListView_InsertItem($tListView, $indx, $strHost & "|" & $strStatus & "|" & $strResult) EndFunc;==>ExecStatus Func ExecStatusInfo($indx, $strHost) $tmpfile = FileOpen("C:\" & $strHost & "psexec.Log", 0) $strStatus = FileRead($tmpfile) FileClose($tmpfile) FileDelete("C:\" & $strHost & "psexec.Log") If StringInStr($strStatus, "Process ID") > 0 Then $str = StringRight($strStatus, StringLen($strStatus) - StringInStr($strStatus, "Process ID") + 1) $str = StringLeft($str, StringInStr($str, ".")) ExecStatus($indx, $strHost, "Finished", $str) Return EndIf If StringInStr($strStatus, "error copying") > 0 Then ExecStatus($indx, $strHost, "Error copying file to host.", "Failed") Return EndIf ExecStatus($indx, $strHost, "Failed to Execute.", "Failed") Return EndFunc;==>ExecStatusInfo Func ExecStatusWin() $tGui = GUICreate("Execution Status", 450, 400, -1, -1, $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_SIZEBOX) $tListView = GUICtrlCreateListView("Hostname|Status|Result", 0, 0, 448, 380) _GUICtrlListView_SetColumnWidth($tListView, 0, 100) _GUICtrlListView_SetColumnWidth($tListView, 1, 160) _GUICtrlListView_SetColumnWidth($tListView, 2, 100) GUISetState(@SW_SHOW, $tGui) Return WinGetHandle("Execution Status") EndFunc;==>ExecStatusWin Func GetComputers($domainname) $objComputers = ObjGet("LDAP://CN=Computers," & $domainname) Local $strComputers For $obj In $objComputers $strComputers = $strComputers & $obj.Name & "," Next $obj = "" $objComputers = "" $strComputers = StringLeft($strComputers, StringLen($strComputers) - 1) $strComputers = StringReplace($strComputers, "CN=", "") $arrComputers = StringSplit($strComputers, ",") _ArrayDelete($arrComputers, 0) _ArraySort($arrComputers) Return $arrComputers EndFunc;==>GetComputers Func GenPSEXEC($host) FileInstall("psexec.exe", "C:\" & $host & "psexec.exe") $psexecpath = "C:\" & $host & "psexec.exe" Return $psexecpath EndFunc;==>GenPSEXEC Func RDPconsole() $ExecStatWin = ExecStatusWin() For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" EndIf If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" ExecStatus($i, $hostnamevar, "Attempting connection...") EndIf If Ping($hostnamevar) Then ExecStatus($i, $hostnamevar, "Executing...") Run(@ComSpec & ' /c ' & "mstsc.exe /v:" & $hostnamevar, @TempDir, @SW_HIDE) ExecStatus($i, $hostnamevar, "Compleet") Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf Next EndFunc;==>RDPconsole Func GetRootDSE() $RootDSE = ObjGet("LDAP://RootDSE") Return $RootDSE.get ("DefaultNamingContext") EndFunc;==>GetRootDSE Func vnc() $ExecStatWin = ExecStatusWin() For $i = 0 To _GUICtrlListBox_GetCount($hostlist) - 1 $hostnamevar = _GUICtrlListBox_GetText($hostlist, $i) If StringUpper($hostnamevar) = StringUpper(@ComputerName) Then $hostnamevar = "127.0.0.1" EndIf If $hostnamevar = "LOCALHOST" Then $hostnamevar = "127.0.0.1" ExecStatus($i, $hostnamevar, "Attempting connection...") EndIf If Ping($hostnamevar) Then $iName = "winvnc" $Computer = $hostnamevar ExecStatus($i, $hostnamevar, "Executing...") _ServStart($iName, $Computer) Run("vncviewer.exe " & $hostnamevar) WinWaitActive("VNC Authentication", 5000) ControlSetText("VNC Authentication", "", "Edit1", "remote") ExecStatus($i, $hostnamevar, "Compleet") Else ExecStatus($i, $hostnamevar, "Failed to ping...", "Failed") EndIf Next EndFunc;==>vnc Func _ServStart($iName, $Computer = ".") $Service = ObjGet("winmgmts:\\" & $Computer & "\root\cimv2") $sItems = $Service.ExecQuery("Select * from Win32_Service Where State = 'Stopped' ") For $objService in $sItems If $objService.Name == $iName Then $objService.StartService($objService.Name) Return EndIf Next Return SetError(-1) EndFunc Func _Main() Local $s_Machine, $t_input = "", $num_pcs = 0, $item_num = 0 Local $Title = "Computer list", $MAIN_WINDOW Local $Domain, $filter, $filters, $win_state, $Retrieve_Method Local $exititem Local $Domainitem, $Filtermenu, $Filteritem, $PingTimeOutitem, $FilterIPitem Local $ib_search, $Btn_Search, $Btn_Exit, $i_TimeOut Local $lv_pcs, $lv_pcs_contextmenu, $lv_pcs_contextRefresh, $lv_pcs_contextPopulate Local $lv_pcs_pslist_taskmodetree, $lv_pcs_pslist_taskmode, $lv_pcs_pslist Local $tabs, $tab_pids, $tab_hotfixes Local $lv_allsoftware, $lv_allsoftware_contextmenu, $lv_allsoftware_contextRefresh Local $lv_pid, $lv_pid_contextmenu, $lv_pid_contextKill, $lv_pid_contextRefresh Local $Status, $dll, $msg, $MOUSE_POS, $explore_with, $eb_system Local $tab_loggedin, $lv_loggedin, $tab_drives, $lv_drives, $lv_drives_contextmenu, $lv_drives_contextExplore Local $tab_services, $lv_services, $lv_services_contextmenu, $lv_service_stop, $lv_service_contextRefresh, $lv_service_start Local $lv_service_pause, $lv_service_resume, $lv_service_delete Local $lv_service_startmode, $lv_service_startmodeBoot, $lv_service_startmodeSystem, $lv_service_startmodeAutomatic Local $lv_service_startmodeManual, $lv_service_startmodeDisabled Local $configmenuRetrieveMethods, $ldapitem, $netvitem, $IP_Range = "", $Use_IPRange #endregion **** end variable declares ***** TCPStartup() $Domain = "nea-group.intern" $filter = "*" $Retrieve_Method = "LDAP" $explore_with = "iexplore" $i_TimeOut = 4 $filters = StringSplit($filter, "|") $MAIN_WINDOW = GUICreate($Title, 280, 560, -1, -1, BitOR($WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)) $lv_pcs = GUICtrlCreateListView("Machine|IP Address|ID", 0, 0, 276, 460, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER)) GUICtrlSendMsg($lv_pcs, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) _GUICtrlListView_SetColumnWidth ($lv_pcs, 0, 100) _GUICtrlListView_SetColumnWidth ($lv_pcs, 1, 120) _GUICtrlListView_HideColumn ($lv_pcs, 2) $lv_pcs_contextmenu = GUICtrlCreateContextMenu($lv_pcs) GUISetState() If Not StringInStr($Domain, "YOUR-DOMAIN") Then If $Retrieve_Method = "LDAP" Then _RetrieveComputersLdap($lv_pcs, $Domain, $filters, $Status, $i_TimeOut, _ $lv_allsoftware, $lv_pid, $lv_drives, $lv_loggedin, $eb_system, $IP_Range) Else EndIf EndIf GUICtrlSetState($ib_search, $GUI_FOCUS) $dll = DllOpen("user32.dll") While 1 $msg = GUIGetMsg() $win_state = WinGetState($MAIN_WINDOW) Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem ExitLoop Case $msg = $Filteritem _ConfigFilters($filter, $MAIN_WINDOW) Case $msg = $FilterIPitem _ConfigIpRange($IP_Range, $Use_IPRange, $MAIN_WINDOW) Case $msg = $ldapitem If BitAND(GUICtrlRead($ldapitem), $GUI_CHECKED) Then $Retrieve_Method = "LDAP" GUICtrlSetState($netvitem, $GUI_UNCHECKED) EndIf Case $msg = $PingTimeOutitem _ConfigPingTimeOut($i_TimeOut, $MAIN_WINDOW) EndSelect WEnd DllClose($dll) EndFunc;==>_Main Func _RetrieveComputersLdap(ByRef $h_listview, ByRef $Domain, ByRef $filters, ByRef $pc_status, ByRef $ping_timeout, _ ByRef $lv_allsoftware, ByRef $lv_pid, ByRef $lv_drives, ByRef $lv_loggedin, ByRef $eb_system, $IP_Range = "") Local $lv_item, $num_pcs = 1, $inFilter _LockAndWait() GUICtrlSetData($eb_system, "") _GUICtrlListView_DeleteAllItems ($lv_allsoftware) _GUICtrlListView_DeleteAllItems ($lv_pid) _GUICtrlListView_DeleteAllItems ($lv_drives) _GUICtrlListView_DeleteAllItems ($lv_loggedin) _GUICtrlListView_DeleteAllItems ($h_listview) _GUICtrlListView_DeleteAllItems ($h_listview) _GUICtrlListBox_ResetContent($hostlist) _ResetLockWait() _GUICtrlListView_SetColumnWidth ($h_listview, 1, 140) _GUICtrlListView_HideColumn ($h_listview, 2) Local $ObjDomain = ObjGet("WinNT://" & $Domain) Local $ip_address, $pc_name For $Object In $ObjDomain $ip_address = "" If $Object.class = "Computer" Then $pc_name = $Object.Name $inFilter = 0 If $filters[0] = 1 And $filters[1] = "*" Then $inFilter = 1 Else For $x = 1 To $filters[0] If StringUpper(StringMid($pc_name, 1, StringLen($filters[$x]))) = StringUpper($filters[$x]) Then $inFilter = 1 ExitLoop EndIf Next EndIf If $inFilter Then If IsArray($IP_Range) Then For $x = 1 To $IP_Range[0] Local $strIP = StringSplit(TCPNameToIP($pc_name), ".") Local $low_r = StringSplit($IP_Range[$x], "-") Local $high_r = $low_r[2] $low_r = StringSplit($low_r[1], ".") If (Int($strIP[1]) = Int($low_r[1]) And Int($strIP[2]) = Int($low_r[2]) And Int($strIP[3]) = Int($low_r[3])) And _ (Int($strIP[4]) >= Int($low_r[4]) And Int($strIP[4]) <= Int($high_r)) Then $lv_item = GUICtrlCreateListViewItem($pc_name & "| | ", $h_listview) GUICtrlSetData($lv_item, $pc_name & "| |" & $lv_item) _SetStatus($h_listview, _GUICtrlListView_GetItemCount ($h_listview) - 1, $pc_status, $ping_timeout) _ReduceMemory() GUICtrlSetData($pc_status, "Machines: " & $num_pcs) $num_pcs += 1 ExitLoop EndIf Next Else $lv_item = GUICtrlCreateListViewItem($pc_name & "| | ", $h_listview) GUICtrlSetData($lv_item, $pc_name & "| |" & $lv_item) _SetStatus($h_listview, _GUICtrlListView_GetItemCount ($h_listview) - 1, $pc_status, $ping_timeout) _ReduceMemory() GUICtrlSetData($pc_status, "Machines: " & $num_pcs) $num_pcs += 1 EndIf EndIf EndIf Next _GUICtrlListView_SetColumnWidth ($h_listview, 0, 140) _GUICtrlListView_SetColumnWidth ($h_listview, 1, 100) _GUICtrlListView_HideColumn ($h_listview, 2) GUISetCursor($Cursor_ARROW, 1) EndFunc;==>_RetrieveComputersLdap Func _SetStatus(ByRef $lv_listview, $index, ByRef $Status, ByRef $ping_length) Local $pc_name = _GUICtrlListView_GetItemText ($lv_listview, $index, 0) Local $ip_address = '', $ping_time If $ping_length Then $ping_time = Ping($pc_name, $ping_length) If $ping_time Then Local $lv_item = _GUICtrlListView_GetItemText ($lv_listview, $index, 2) $ip_address = TCPNameToIP($pc_name) GUICtrlSetData($lv_item, $pc_name & "|" & $ip_address & "|" & $lv_item) _ReduceMemory() Return 1 Else Local $lv_item = _GUICtrlListView_GetItemText ($lv_listview, $index, 2) If Ping($lv_item,250) Then GUICtrlSetData($lv_item, $pc_name & "|" &TCPNameToIP($pc_name)& "|" & $lv_item) Else GUICtrlSetData($lv_item, $pc_name & "|" &"---OFFLINE---"& "|" & $lv_item) EndIf EndIf EndIf _ReduceMemory() Return 0 EndFunc;==>_SetStatus Func _GetRole(ByRef $s_pc, ByRef $Status) Local $objWMIService, $colComputer, $objComputer $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $s_pc & "\root\cimv2") If @error Then GUICtrlSetData($Status, "Unable to retrieve Role:" & $s_pc) Return EndIf $colComputer = $objWMIService.ExecQuery ("Select * from Win32_ComputerSystem", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If @error Then GUICtrlSetData($Status, "Unable to retrieve Role:" & $s_pc) Return EndIf For $objComputer In $colComputer If Int($objComputer.DomainRole) = 1 Then GUICtrlSetData($Status, $s_pc & " is WorkStation") ElseIf Int($objComputer.DomainRole) = 3 Then GUICtrlSetData($Status, $s_pc & " is Server") ElseIf Int($objComputer.DomainRole) = 4 Then GUICtrlSetData($Status, $s_pc & " is Backup Domain Controller") ElseIf Int($objComputer.DomainRole) = 5 Then GUICtrlSetData($Status, $s_pc & " is Primary Domain Controller") Else GUICtrlSetData($Status, "Unable to retrieve Role:" & $s_pc) EndIf Return $objComputer.DomainRole Next EndFunc;==>_GetRole Func _ConfigPingTimeOut(ByRef $i_TimeOut, ByRef $MAIN_WINDOW) GUISetState(@SW_DISABLE, $MAIN_WINDOW) Local $Save, $LABEL, $CLOSE, $TimeOut_msg, $TimeOut_Window $TimeOut_Window = GUICreate("Ping Time Out Config", 340, 140, -1, -1, -1, -1, $MAIN_WINDOW) #Region --- CodeWizard generated code Start --- If Not IsDeclared('Cadet_Blue_3') Then Dim $Cadet_Blue_3 = 0x7AC5CD GUISetBkColor($Cadet_Blue_3) #EndRegion --- CodeWizard generated code End --- GUICtrlCreateLabel("Ping Time Out (Milliseconds, 0 = no ping)", 10, 10, 320, 20, $ES_CENTER) Local $TimeOut_input = GUICtrlCreateInput($i_TimeOut, 90, 40, 150, 20, $ES_NUMBER) $Save = GUICtrlCreateButton("Save", 40, 100, 120, 25) $CLOSE = GUICtrlCreateButton("Close", 180, 100, 120, 25) GUISetState() Do $TimeOut_msg = GUIGetMsg() Select Case $TimeOut_msg = $Save $i_TimeOut = Int(GUICtrlRead($TimeOut_input)) IniWrite(@ScriptDir & '\AdminTool.ini', "Ping", "TimeOut", $i_TimeOut) Case $TimeOut_msg = $CLOSE ExitLoop EndSelect Until $TimeOut_msg = $GUI_EVENT_CLOSE GUIDelete($TimeOut_Window) GUISetState(@SW_ENABLE, $MAIN_WINDOW) GUISetState(@SW_SHOW, $MAIN_WINDOW) EndFunc;==>_ConfigPingTimeOut Func _ConfigFilters(ByRef $s_filter, ByRef $MAIN_WINDOW) GUISetState(@SW_DISABLE, $MAIN_WINDOW) Local $Save, $LABEL, $CLOSE, $filter_msg, $Filter_Window, $win_state Local $lv_filters, $a_filter, $x, $filter_input, $Add, $Delete $Filter_Window = GUICreate("Filter Config", 300, 220, -1, -1, -1, -1, $MAIN_WINDOW) #Region --- CodeWizard generated code Start --- If Not IsDeclared('Cadet_Blue_3') Then Dim $Cadet_Blue_3 = 0x7AC5CD GUISetBkColor($Cadet_Blue_3) #EndRegion --- CodeWizard generated code End --- GUICtrlCreateLabel('PC Name Filter', 20, 10, 250, 20) GUICtrlCreateLabel("All Example: *", 20, 25, 250, 20) GUICtrlCreateLabel("Example: Z", 20, 40, 250, 20) $lv_filters = GUICtrlCreateListView("Filters", 20, 70, 100, 100, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER)) GUICtrlSendMsg($lv_filters, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) GUICtrlSendMsg($lv_filters, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) _GUICtrlListView_SetColumnWidth ($lv_filters, 0, 90) $a_filter = StringSplit($s_filter, "|") For $x = 1 To $a_filter[0] GUICtrlCreateListViewItem($a_filter[$x], $lv_filters) Next $filter_input = GUICtrlCreateInput("", 140, 70, 120, 20) $Add = GUICtrlCreateButton("Add", 140, 100, 120, 25) $Delete = GUICtrlCreateButton("Delete", 140, 130, 120, 25) GUICtrlSetState($Delete, $GUI_DISABLE) $Save = GUICtrlCreateButton("Save", 20, 190, 120, 25) $CLOSE = GUICtrlCreateButton("Close", 160, 190, 120, 25) GUISetState() Do $filter_msg = GUIGetMsg() Select Case $filter_msg = $Save If _GUICtrlListView_GetItemCount ($lv_filters) > 0 Then $s_filter = "" For $x = 0 To _GUICtrlListView_GetItemCount ($lv_filters) - 1 $s_filter = $s_filter & "|" & _GUICtrlListView_GetItemText ($lv_filters, $x, 0) Next $s_filter = StringTrimLeft($s_filter, 1) IniWrite(@ScriptDir & '\AdminTool.ini', "Workstations", "filter", $s_filter) EndIf Case $filter_msg = $Delete _GUICtrlListView_DeleteItemsSelected ($lv_filters) GUICtrlSetState($Delete, $GUI_DISABLE) Case $filter_msg = $Add If StringLen(GUICtrlRead($filter_input)) Then GUICtrlCreateListViewItem(GUICtrlRead($filter_input), $lv_filters) Case $filter_msg = $CLOSE ExitLoop Case $filter_msg = $GUI_EVENT_PRIMARYDOWN $win_state = WinGetState($Filter_Window) If BitAND($win_state, 8) And BitAND($win_state, 2) Then If _GUICtrlListView_GetNextItem ($lv_filters) <> $LV_ERR Then GUICtrlSetState($Delete, $GUI_ENABLE) EndIf EndIf EndSelect Until $filter_msg = $GUI_EVENT_CLOSE GUIDelete($Filter_Window) GUISetState(@SW_ENABLE, $MAIN_WINDOW) GUISetState(@SW_SHOW, $MAIN_WINDOW) EndFunc;==>_ConfigFilters Func _ConfigIpRange(ByRef $a_IPRange, ByRef $Use_IPRange, ByRef $MAIN_WINDOW) GUISetState(@SW_DISABLE, $MAIN_WINDOW) Local $Save, $LABEL, $CLOSE, $filter_msg, $Filter_Window, $win_state, $ip, $nCurEdit = 0, $ip_tmp Local $lv_filters, $s_filter, $x, $filter_input[5], $filter_use, $Add, $Delete, $ip_len, $current_control $Filter_Window = GUICreate("IP Range Config", 360, 220, -1, -1, -1, -1, $MAIN_WINDOW) #Region --- CodeWizard generated code Start --- If Not IsDeclared('Cadet_Blue_3') Then Dim $Cadet_Blue_3 = 0x7AC5CD GUISetBkColor($Cadet_Blue_3) #EndRegion --- CodeWizard generated code End --- GUICtrlCreateLabel('Range(s) of IP Filter', 20, 10, 250, 20) $lv_filters = GUICtrlCreateListView("Start|End", 20, 40, 140, 140, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER)) GUICtrlSendMsg($lv_filters, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) GUICtrlSendMsg($lv_filters, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) _GUICtrlListView_SetColumnWidth ($lv_filters, 0, 90) If IsArray($a_IPRange) Then For $x = 1 To $a_IPRange[0] $s_filter = StringReplace($a_IPRange[$x], "-", "|") GUICtrlCreateListViewItem($s_filter, $lv_filters) Next EndIf $filter_use = GUICtrlCreateCheckbox("Use IP Range Inclusion Filter(s)", 170, 40) If $Use_IPRange Then GUICtrlSetState($filter_use, $GUI_CHECKED) $filter_input[0] = GUICtrlCreateInput("", 170, 70, 30, 20, $ES_NUMBER) GUICtrlSetLimit($filter_input[0], 3, 1) $filter_input[1] = GUICtrlCreateInput("", 205, 70, 30, 20, $ES_NUMBER) GUICtrlSetLimit($filter_input[1], 3, 1) $filter_input[2] = GUICtrlCreateInput("", 240, 70, 30, 20, $ES_NUMBER) GUICtrlSetLimit($filter_input[2], 3, 1) $filter_input[3] = GUICtrlCreateInput("", 275, 70, 30, 20, $ES_NUMBER) GUICtrlSetLimit($filter_input[3], 3, 1) GUICtrlCreateLabel("-", 310, 70, 10, 20) $filter_input[4] = GUICtrlCreateInput("", 320, 70, 30, 20, $ES_NUMBER) GUICtrlSetLimit($filter_input[4], 3, 1) $Add = GUICtrlCreateButton("Add", 170, 100, 120, 25) GUICtrlSetState($Add, $GUI_DISABLE) $Delete = GUICtrlCreateButton("Delete", 170, 130, 120, 25) GUICtrlSetState($Delete, $GUI_DISABLE) $Save = GUICtrlCreateButton("Save", 50, 190, 120, 25) $CLOSE = GUICtrlCreateButton("Close", 190, 190, 120, 25) GUISetState() GUICtrlSetState($filter_input[0], $GUI_FOCUS) Do $filter_msg = GUIGetMsg() $ip = _IsPressedMod() If $ip > 0 Then $ip_tmp = GUICtrlRead($filter_input[$nCurEdit]) If (StringLen($ip_tmp) = 3) And not ($ip = 8) Then If $nCurEdit = UBound($filter_input) - 1 Then ContinueLoop $nCurEdit = $nCurEdit + 1 GUICtrlSetState($filter_input[$nCurEdit], $GUI_FOCUS) ElseIf (StringLen($ip_tmp) = 0) and ($ip = 8) Then If $nCurEdit = 0 Then ContinueLoop $nCurEdit = $nCurEdit - 1 Sleep ( 200 ); make sure buffer clears GUICtrlSetState($filter_input[$nCurEdit], $GUI_FOCUS) GUICtrlSetData($filter_input[$nCurEdit], GUICtrlRead($filter_input[$nCurEdit])) EndIf EndIf ; set current selection in case user hit tab key or used mouse to select input $current_control = ControlGetFocus($Filter_Window) Select Case $current_control = "Edit1" And $nCurEdit > 0 $nCurEdit = 0 Case $current_control = "Edit2" And $nCurEdit <> 1 $nCurEdit = 1 Case $current_control = "Edit3" And $nCurEdit <> 2 $nCurEdit = 2 Case $current_control = "Edit4" And $nCurEdit <> 3 $nCurEdit = 3 Case $current_control = "Edit5" And $nCurEdit < 4 $nCurEdit = 4 EndSelect Select Case $filter_msg = $Save If BitAND(GUICtrlRead($filter_use), $GUI_CHECKED) Then $Use_IPRange = 1 Else $Use_IPRange = 0 EndIf IniWrite(@ScriptDir & '\AdminTool.ini', "IP-Filter", "Use", $Use_IPRange) IniDelete(@ScriptDir & '\AdminTool.ini', "IP-Ranges") If _GUICtrlListView_GetItemCount ($lv_filters) > 0 Then ReDim $a_IPRange[_GUICtrlListView_GetItemCount ($lv_filters) + 1] $a_IPRange[0] = _GUICtrlListView_GetItemCount ($lv_filters) For $x = 0 To _GUICtrlListView_GetItemCount ($lv_filters) - 1 $a_IPRange[$x + 1] = StringReplace(_GUICtrlListView_GetItemText ($lv_filters, $x), "|", "-") IniWrite(@ScriptDir & '\AdminTool.ini', "IP-Ranges", "Range" & $x + 1, $a_IPRange[$x + 1]) Next Else $a_IPRange = "" EndIf Case $filter_msg = $Delete _GUICtrlListView_DeleteItemsSelected ($lv_filters) GUICtrlSetState($Delete, $GUI_DISABLE) Case $filter_msg = $Add $ip = "" For $x = 0 To 3 $ip = $ip & GUICtrlRead($filter_input[$x]) & "." Next $ip = StringTrimRight($ip, 1) GUICtrlCreateListViewItem($ip & "|" & GUICtrlRead($filter_input[4]), $lv_filters) For $x = 0 To 4 GUICtrlSetData($filter_input[$x], "") Next ;*********************************** $nCurEdit = 0 ;*********************************** Case $filter_msg = $CLOSE ExitLoop Case $filter_msg = $GUI_EVENT_PRIMARYDOWN $win_state = WinGetState($Filter_Window) If BitAND($win_state, 8) And BitAND($win_state, 2) Then If _GUICtrlListView_GetNextItem ($lv_filters) <> $LV_ERR Then GUICtrlSetState($Delete, $GUI_ENABLE) EndIf EndIf EndSelect $ip_len = True For $x = 0 To 4 If StringLen(GUICtrlRead($filter_input[$x])) == 0 Then $ip_len = False If ControlCommand($Filter_Window, "", $Add, "IsEnabled", "") Then GUICtrlSetState($Add, $GUI_DISABLE) ExitLoop EndIf Next If $ip_len And Not ControlCommand($Filter_Window, "", $Add, "IsEnabled", "") Then GUICtrlSetState($Add, $GUI_ENABLE) Until $filter_msg = $GUI_EVENT_CLOSE GUIDelete($Filter_Window) GUISetState(@SW_ENABLE, $MAIN_WINDOW) GUISetState(@SW_SHOW, $MAIN_WINDOW) EndFunc;==>_ConfigIpRange Func _IsPressedMod() Local $aR, $bRv, $hexKey, $i For $i = 8 To 128 $hexKey = '0x' & Hex($i, 2) $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey) If $aR[0] <> 0 Then Return $i Next Return 0 EndFunc;==>_IsPressedMod Func _GetIPRanges($IniFile, ByRef $IP_Range) Local $Ranges = IniReadSection($IniFile, "IP-Ranges"), $x If Not @error Then Dim $IP_Range[$Ranges[0][0] + 1] $IP_Range[0] = $Ranges[0][0] For $x = 1 To $Ranges[0][0] $IP_Range[$x] = $Ranges[$x][1] Next EndIf EndFunc;==>_GetIPRanges Func _ReduceMemory() Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1) Return $ai_Return[0] EndFunc;==>_ReduceMemory Func _LockAndWait() GUISetState(@SW_LOCK) EndFunc;==>_LockAndWait Func _ResetLockWait() GUISetState(@SW_UNLOCK) GUISetCursor($Cursor_ARROW, 1) _ReduceMemory() EndFunc;==>_ResetLockWait
  11. If you are looking for more ideas on process info fields to add to your script, maybe take a look at Process Explorer
  12. This solved my troubles as well, proof that posting fixes is better late than never
  13. apart from telling you that you are a dick, i found both yours and dbzfanatic's posts to be extremely helpful as will others im sure. thanks
×
×
  • Create New...