isadmin remote maschine

  • Hey,

    hat jemand eine idee wie ich auf einer remote maschine festellen kann ob der aktuelle user admin ist?

    Danke
    SuzbZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (7. Dezember 2009 um 18:35)

  • Hey,

    hier der Code wo ich es einbauen wollte:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=..\..\ico\11.ico
    #AutoIt3Wrapper_outfile=AdminOnHost.exe
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <array.au3>
    #include <File.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <inet.au3>
    #include <adfunctions.au3>

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

    $Form1 = GUICreate("AdminHost", 900, 560, 231, 154)
    GUISetFont(8, 400, 0, "@Arial Unicode MS")
    GUISetBkColor(0xA6CAF0)
    $ListViewhost = GUICtrlCreateListView("Hostname", 32, 32, 170, 430)
    $Liste = GUICtrlCreateListView("Host|Group|Typ|Objekt", 224, 32, 670, 430)
    $Hostladen = GUICtrlCreateButton("Hostladen", 32, 14, 75, 17, $WS_GROUP)
    ;$Checkall22 = GUICtrlCreateButton("Last Logged OnUSER", 32, 460, 130, 17, $WS_GROUP)
    $Checkall11 = GUICtrlCreateButton("Starten", 220, 480, 130, 17, $WS_GROUP)
    $CheckUser = GUICtrlCreateButton("User Info", 350, 480, 70, 17, $WS_GROUP)

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

    $Inputcn = GUICtrlCreateInput("", 32, 480, 170, 23)
    $Insert = GUICtrlCreateButton("Hinzufügen", 42, 510, 130, 17, $WS_GROUP)
    $del = GUICtrlCreateButton("Löschen", 42, 530, 130, 17, $WS_GROUP)

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

    ;$stop = GUICtrlCreateButton("Stop", 32, 513, 75, 17, $WS_GROUP)
    $Export = GUICtrlCreateButton("Export", 820, 480, 75, 17, $WS_GROUP)

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

    GUISetState(@SW_SHOW)
    Global $FileOpenDialog, $ListViewText, $Text = "", $IP = "", $STATus = "", $result, $hostincsveingetragen
    Global $server, $objWMIService

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

    While 1

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

    $nMsg = GUIGetMsg()

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

    Switch $nMsg
    Case $del
    _GUICtrlListView_DeleteAllItems($ListViewhost)
    _GUICtrlListView_DeleteAllItems($Liste)
    Case $Insert
    GUICtrlCreateListViewItem(GUICtrlRead($Inputcn), $ListViewhost)

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

    Case $Export
    _export()

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

    Case $GUI_EVENT_CLOSE
    Exit
    Case $Hostladen
    _load()
    Case $Checkall11

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

    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $i)
    ;_befuelle_lv_liste()
    Global $server = $ListViewText
    If $CmdLine[0] > 0 Then $server = $CmdLine[1]

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

    $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $server & "\root\cimv2")
    Ping($server, 100) ; Host anpingen
    If not @error = 0 Then MsgBox(0, "", "Host Offline")
    ping($server, 100) ; Host anpingen
    If @error = 0 Then Membership_Administrators_Local($server)

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

    ;EndIf

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

    Next
    Case $CheckUser
    _userinfo()

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

    EndSwitch
    WEnd

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

    Func Membership_Administrators_Local($srv)
    If StringUpper($srv) = StringUpper("Localhost") Then $srv = @ComputerName
    Local $function_name = "Members"
    Local $LM_members, $x, $LM_LocalGroup_Name, $type, $colItems2, $LM_local_user, $y, $line, $TimeStamp
    Local $filename_ms = $function_name & "_" & $srv
    Local $filename_error_current = $function_name & "_" & $srv & "_error.log"
    $LM_LocalGroup_Name = "Administrators"
    $colItems = $objWMIService.ExecQuery("Select SID from Win32_Group WHERE Domain='" & $srv & "'", "WQL", 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If StringUpper($objItem.SID) = StringUpper("S-1-5-32-544") Then $LM_LocalGroup_Name = $objItem.Name
    Next
    EndIf
    $type = ""
    $LM_local_user = ""
    $colItems = $objWMIService.ExecQuery("Select * from Win32_GroupUser Where GroupComponent=""Win32_Group.Domain='" & $srv & "',Name='" & $LM_LocalGroup_Name & "'""", "WQL", 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.PartComponent <> "" Then
    $x = StringSplit($objItem.PartComponent, """")
    $type = StringMid($x[1], StringInStr($x[1], ":Win32_") + 7, (StringInStr($x[1], ".") - (StringInStr($x[1], ":Win32_") + 7)))
    $LM_members &= $srv & "|" & $LM_LocalGroup_Name & "|" & $type & "|" & $x[2] & "\" & $x[4] & "|" & @CRLF
    GUICtrlCreateListViewItem($srv & "|" & $LM_LocalGroup_Name & "|" & $type & "|" & $x[2] & "\" & $x[4] & "|", $Liste)

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

    EndIf
    Next
    EndIf
    ConsoleWrite($LM_members)

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

    EndFunc ;==>Membership_Administrators_Local

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

    Func _userinfo()

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

    $aSel = _GUICtrlListView_GetSelectedIndices($Liste, True)
    For $i = 1 To $aSel[0]
    $var1 = _GUICtrlListView_GetItemText($Liste, $aSel[$i], 3)
    $var2 = _GUICtrlListView_GetItemText($Liste, $aSel[$i], 0)
    $var1 = StringReplace($var1, 'Domane\', '')
    If $var1 = "" Then
    MsgBox(0, "", "User ID nicht bekannt")
    Else

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

    $TSDIS = Run(@ComSpec & " /c " & @ScriptDir & '\Modul\lockout.exe ' & $var1, "", @SW_HIDE)
    ConsoleWrite(@ScriptDir & '\Modul\lockout.exe ' & $var1)
    EndIf
    Next

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

    EndFunc ;==>_userinfo

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

    Func _export()

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

    $hWnd = $Liste
    $path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
    If @error Then Return MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
    FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
    EndFunc ;==>_export

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

    Func _GUICtrlListView_Export($hWnd, $exType = 0, $Delim = Default) ; $exType=0 Array / $exType=1 String
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $row = _GUICtrlListView_GetItemCount($hWnd)
    If $exType Then
    If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
    Local $sOut = ''
    For $i = 0 To $row - 1
    $sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
    Next
    If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
    Opt("MustDeclareVars", 1)
    Opt("MustDeclareVars", 1)
    Opt("MustDeclareVars", 1)
    Opt("MustDeclareVars", 1)
    Global $countc, $countm, $counts, $Labelhp, $lv3countm

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

    Return $sOut
    EndIf
    Local $col = _GUICtrlListView_GetColumnCount($hWnd)
    Local $aOut[$row][$col]
    If $col = 1 Then
    ReDim $aOut[$row]
    For $i = 0 To UBound($aOut) - 1
    $aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
    Next
    Return $aOut
    EndIf
    For $i = 0 To UBound($aOut) - 1
    For $j = 0 To UBound($aOut, 2) - 1
    $aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
    Next
    Next
    Return $aOut
    EndFunc ;==>_GUICtrlListView_Export

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

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($ListViewhost) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
    _GUICtrlListView_DeleteAllItems($Liste) ; Das Handle eben noch bestimmen (s. Anfang des Threads)

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

    Local $sItem
    $FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    Local $hFile = FileOpen($FileOpenDialog, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewhost) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $ListViewhost) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewhost) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>_Load

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ich glaube ich habe mein ziel nicht genau beschrieben ziel ist:

    ich will prüfen ob mein user mit dem ich angemeldet bin auf der remote maschine admin ist wenn ja will ich
    die funktion Membership_Administrators_Local starten weiss aber nicht wie ich das hinkriegen soll ?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (7. Dezember 2009 um 16:16)

  • Teste mal das:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    ConsoleWrite(_IsAdmin("Testkonto", @IPAddress1) & @CR)

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

    Func _NetUserGetLocalGroups($sUsername, $sServer = "") ; array[0] contains number of elements
    Local Const $LG_INCLUDE_INDIRECT = 0x1
    Local $tBufPtr = DllStructCreate("ptr")
    Local $ptBufPtr = DllStructGetPtr($tBufPtr)
    Local $tEntriesRead = DllStructCreate("dword")
    Local $ptEntriesRead = DllStructGetPtr($tEntriesRead)
    Local $tTotalEntries = DllStructCreate("dword")
    Local $ptTotalEntries = DllStructGetPtr($tTotalEntries)
    Local $aRet = DllCall("Netapi32.dll", "int", "NetUserGetLocalGroups", "wstr", $sServer, "wstr", $sUsername, "dword", 0, "dword", $LG_INCLUDE_INDIRECT, "ptr", $ptBufPtr, "dword", -1, "ptr", $ptEntriesRead, "ptr", $ptTotalEntries)
    If $aRet[0] Then Return SetError(1, $aRet[0], False)
    Local $iEntriesRead = DllStructGetData($tEntriesRead, 1)
    Local $pBuf = DllStructGetData($tBufPtr, 1)
    Local $sLocalGroupUsersInfo0 = "ptr"
    Local $tLocalGroupUsersInfo0 = DllStructCreate($sLocalGroupUsersInfo0)
    Local $zLocalGroupUsersInfo0 = DllStructGetSize($tLocalGroupUsersInfo0)
    Local $tLocalGroupName
    Local $aLocalGroupNames[1] = [0]
    For $i = 1 To $iEntriesRead
    $tLocalGroupUsersInfo0 = DllStructCreate($sLocalGroupUsersInfo0, $pBuf + ($i - 1) * $zLocalGroupUsersInfo0)
    $tLocalGroupName = DllStructCreate("wchar[256]", DllStructGetData($tLocalGroupUsersInfo0, 1))
    $aLocalGroupNames[0] += 1
    ReDim $aLocalGroupNames[$aLocalGroupNames[0] + 1]
    $aLocalGroupNames[$aLocalGroupNames[0]] = DllStructGetData($tLocalGroupName, 1)
    Next
    DllCall("Netapi32.dll", "int", "NetApiBufferFree", "ptr", $pBuf)
    Return $aLocalGroupNames
    EndFunc ;==>_NetUserGetLocalGroups

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

    Func _IsAdmin($UserName, $sServer = "")
    Local $aLocalGroupNames = _NetUserGetLocalGroups($UserName, $sServer)
    Local $ArraySearch = _ArraySearch($aLocalGroupNames, "Administratoren", 1) ;Anmerkung funkey: String nur für deutsche Systeme
    If $ArraySearch == -1 Then
    Return False
    Else
    Return True
    EndIf
    EndFunc ;==>_IsAdmin

    [/autoit]
  • klappt irgendwie nicht ???

    habe immer ein false??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • habe auch XP ???

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."