Computer im Netztwerk anzeigen lassen

  • Ich hätte ja gerne in meinen alten Thread gepostet, doch weil ich vorher meinen post gelöscht hatte, kam die Fehlermeldung, das ich einen doppelpost machen würde.

    Mein Problem:
    Ich würde gerne die namen aller Computer im Lokalen Netztwerk herausbekommen.
    Dies war zuerst mein Code:

    [autoit]

    #include <process.au3>
    #include <string.au3>
    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    $computer=_getcomputer()
    _arraydisplay($computer)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func _getcomputer()
    _RunDOS("net view >> " & @appdatacommondir & "/netview.txt" )

    [/autoit][autoit][/autoit][autoit]

    $file=fileopen(@appdatacommondir & "/netview.txt",0)
    $lol = FileRead($file)
    FileClose ($file)
    FIleDelete(@appdatacommondir & "/netview.txt")

    [/autoit][autoit][/autoit][autoit]

    $w=_StringSplit($lol,@CRLF)
    for $i=0 to Ubound($w)-1
    if stringinstr($w[$i],"\\") Then
    $w[$i]=stringreplace($w[$i],"\\","")
    $w[$i]=stringreplace($w[$i]," ","")
    $w[$i]=stringreplace($w[$i]," ","")
    Else
    $w[$i]=""
    endif
    next
    _ArrayDeleteEmpty($w)
    return $w
    endfunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _ArrayDeleteEmpty(ByRef $ARRAY)
    If Not IsArray($ARRAY) Then Return 0
    Local $arTMP[1]
    For $i = 0 To UBound($ARRAY) -1
    If $ARRAY[$i] <> '' Then
    If $arTMP[0] = '' Then
    $arTMP[0] = $ARRAY[$i]
    Else
    ReDim $arTMP[UBound($arTMP)+1]
    $arTMP[UBound($arTMP)-1] = $ARRAY[$i]
    EndIf
    EndIf
    Next
    $ARRAY = $arTMP
    EndFunc

    [/autoit]

    Doch der DOS Befehkl scheint nicht richtig zu gehen und es wird immer nur mein eigener PC angegeben.

    Wendern müsste ich mit erst die Arbeitsgruppen mit "net view /domain" ausgeben lassen und dann noch jede Arbeitsgruppe nach Computern durchsuchen "net view /domain:MSHEIMNETZ" . Doch diese Methode scheint sehr langsam zu sein, gibt es eventuell etwas schnelleres? Ihr wisst ja wie lange Windows immer unter Netztwerk Umgebung braucht. -.-

    • Offizieller Beitrag

    Hallo,

    der DOS-Befehl funktioniert!


    [autoit]

    #include <process.au3>
    #include <string.au3>
    #include <array.au3>
    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit]

    $computer=_getcomputer()
    _arraydisplay($computer)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func _getcomputer()
    Local $PIDNetView = Run("NET VIEW", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
    Local $szClients = ""

    [/autoit][autoit][/autoit][autoit]

    While 1
    $szClients &= StdoutRead($PIDNetView)
    If @error Then ExitLoop
    WEnd
    Local $aszClients = StringRegExp($szClients, "\\\\(\S*)\s", 3)

    [/autoit][autoit][/autoit][autoit]

    return $aszClients
    endfunc

    [/autoit]
  • Dann sehe ich aber nur alle die in der selben Arbeitsgruppe sind. Darum seh ich auch die anderen PCs zuhause nicht, die sehen sich aber gegenseitig.
    Ich denke auf einer Lanparty würde man mit dem Befehl auch nicht alle sehen. :/