angemeldeten User in ListView Subitem eintragen <--- Fehler

  • Hallo zusammen,

    ich möchte in einem Listview Subitem Anhand von "Win32_OperatingSystem" den aktuellen User eintragen lassen.

    Hier bekomme ich folgende Meldung:

    ==> The requested action with this object has failed.:
    $string = String($wmiObj.UserName)

    [autoit]

    $selection_mark = _GUICtrlListView_GetSelectionMark($listview)
    $str_computer = _GUICtrlListView_GetItemText($listview,$selection_mark)
    Ping($str_computer,250)
    If Not @error Then
    _GUICtrlListView_SetItem($listview, "Online", $selection_mark,3)
    Local $wmiColl
    $wmiroot = ObjGet("winmgmts:\\"& $str_computer &"\root\CIMV2")
    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_OperatingSystem")
    For $wmiObj In $wmiColl
    $string = String($wmiObj.UserName)
    _GUICtrlListView_SetItem($listview, $string, $selection_mark,2)
    Next
    $wmiColl = 0

    [/autoit]

    Gleicher Code nur Zeile 10 abgeändert und das funktioniert.

    [autoit]

    $string = StringTrimLeft(string($wmiObj.Caption),9)

    [/autoit]

    Wieso funktioniert das mit UserName nicht?
    Hat einer ne Idee?

    Danke und Gruß
    Norman

  • Entweder hat es mit $wmiObj einen Fehler gegeben oder .UserName existiert nicht. Hast du es schon mal alleine getestet? Sprich ohne Listview?

    Gruss Shadowigor

  • Hast du es schon mal alleine getestet? Sprich ohne Listview?

    Gruss Shadowigor

    Ja habe ich. Das funktioniert.
    Es funktioniert auch wenn ich es wie folgt schreibe

    [autoit]

    $selection_mark = _GUICtrlListView_GetSelectionMark($listview)
    $str_computer = _GUICtrlListView_GetItemText($listview,$selection_mark)
    _GUICtrlListView_SetItem($listview, "Online", $selection_mark,3)
    Local $wmiColl
    $wmiroot = ObjGet("winmgmts:\\"& $str_computer &"\root\CIMV2")
    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_OperatingSystem")
    For $wmiObj In $wmiColl
    $string = String($wmiObj.UserName)
    _GUICtrlListView_SetItem($listview, $string, $selection_mark,2)
    Next
    $wmiColl = 0

    [/autoit]
  • Es scheint unter der Win32_OperatingSystem-Class kein "Username" zu existieren. Siehe MSDN.

    Aber unter "Win32_LoggedOnUser" ist es möglich:

    Spoiler anzeigen
    [autoit]

    $str_computer = "localhost"

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

    $wmiroot = ObjGet("winmgmts:\\"& $str_computer &"\root\CIMV2")
    $wmiColl = $wmiRoot.ExecQuery("SELECT * FROM Win32_LoggedOnUser")
    For $wmiObj In $wmiColl
    $string = StringReplace(StringMid($wmiObj.Antecedent, StringInStr($wmiObj.Antecedent, "=", 0, -1) + 1), '"', '')
    Msgbox(0,"",$string)
    Next
    $wmiColl = 0

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Anscheinend schon weil wie gesagt ohne Ping und den dadrauf folgenden @error funktioniert es ja.

  • Beim mir funktioniert Dein Beispiel aus #3 nicht !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"