Seite 1 von 2

Äquivalent zu 'Net User / Net Group'

Verfasst: 11.03.2014 18:13
von Pelagio
Hallo >:) ,

es gibt unter cmd die Befehle 'Net User' und 'Net Group'. Ist es möglich äquivalente Ergebnisse in einem ListIconGadget anzuzeigen?
Ich könnte zwar die Ergebnisse von 'Net User / - Group' in einer Datei Speichern und von hieraus im ListIconGadget anzeigen lassen aber ich hoffe eventuell das es eine elegantere Lösung geben könnte.
Vielleicht kennt Ihr ja eine, sicherlich kennt Ihr eine. :allright:

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 11.03.2014 20:50
von STARGÅTE
Diese wäre die Win API dazu:
NetUserEnum_()
NetGroupEnum_()

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 12.03.2014 06:22
von Pelagio
Danke STARGÅTE :praise: ,

ich habe mir die Befehle angeschaut und muss leider sagen das ich Probleme mit der Umsetzung habe.
Irgendwie bekomme ich keinen direkten Zugang zur Logik von API Befehlen. In den meisten Fällen probiere ich tagelang irgendwie ein Ergebnis zu bekommen, wenn ich es dann schaffe ist es meistens Glück. Ich bin auch nicht so firm mit der englischen Sprache und muss Übersetzungsprogramme zu Hilfe nehmen die mir aber irgendwie auch nicht weiter helfen. Es wäre mir geholfen wenn ich eine kleine Beispielprozedur hätte von der ich meine weiteren Befehlsabfragen ableiten könnte.
:bounce:

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 12.03.2014 10:33
von ts-soft
Kleines Beispiel, zu mehr hab ich gerade keine Lust :mrgreen:

Code: Alles auswählen

EnableExplicit

Structure USER_INFO_0
  *usri0_name[0]
EndStructure

#MAX_PREFERRED_LENGTH = $FFFFFFFF

Define *bufptr.USER_INFO_0, entriesread, totalentries, i

If Not NetUserEnum_(0, 0, 0, @*bufptr, #MAX_PREFERRED_LENGTH, @entriesread, @totalentries, 0)
  For i = 0 To totalentries -1
    Debug PeekS(*bufptr\usri0_name[i], -1, #PB_Unicode)
  Next
  NetApiBufferFree_(*bufptr)
EndIf
Gruß
Thomas

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 12.03.2014 13:08
von ts-soft
Hier noch ein Beispiel, mit mehr Informationen:

Code: Alles auswählen

EnableExplicit

#MAX_PREFERRED_LENGTH = $FFFFFFFF

Define *bufptr, entriesread, totalentries
Define i, *buffer.USER_INFO_3

If Not NetUserEnum_(0, 3, 0, @*bufptr, #MAX_PREFERRED_LENGTH, @entriesread, @totalentries, 0)
  *buffer = *bufptr
  For i = 1 To totalentries
    Debug PeekS(*buffer\usri3_name, -1, #PB_Unicode)
    Debug "UserID: " + *buffer\usri3_user_id
    Debug "Logon Server: " + PeekS(*buffer\usri3_logon_server, -1, #PB_Unicode)
    Debug "Last logon: " + FormatDate("%dd.%mm.%yyyy %hh:%ii", *buffer\usri3_last_logon)
    *buffer + SizeOf(USER_INFO_3)
    Debug "===================================================="
  Next
  NetApiBufferFree_(*bufptr)
EndIf

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 13.03.2014 15:33
von Pelagio
Hallo ts-soft :praise:

Danke für deinen Code, ich habe damit herumgespielt und glaube inzwischen ein wenig zu verstehen, wie man mit NetUserEnum arbeitet und ich bekomme auch genügend Informationen (User_Info_1, _3 und _20) vom Computer. Allerdings das was ich haben möchte (net user /domain) bekomme ich einfach nicht auf die Reihe, es klappt nicht und zu allen Überfluss bekomme ich noch einen Fehlermedungscode (1113) den ich nicht interpretieren kann, und übers Netz habe ich auch keine Erklärungen gefunden. Es sieht so aus als wenn ich doch noch einmal einen Anstoß von Dir bräuchte. Es ist ärgerlich das es keine >_< API Erklärungen in Deutsch von MS gibt, das würde vielleicht die sache etwas leichter machen.

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 13.03.2014 16:00
von ts-soft
Das sieht aber schlecht aus. Ich habe zur Zeit keine VM mit Windows-Server, bzw. Domänencontroller zur Verfügung,
alle gelöscht, da meine Weiterbildung abgeschlossen ist.
Deshalb auch kein Beispiel zu den Gruppen, weil das funktioniert auch nur in einer Domäne mit ActiveDirectory, ansonsten
kommt da kaum mehr als none raus.

Vielleicht findet sich noch jemand anders, der die Voraussetzungen erfüllen kann oder Du schaffst es doch noch alleine.

Wegen dem ErrorCode, am besten die Konstanten aus der entsprechenden HeaderDatei definieren (Win SDK, PSDK irgendeinem
C-Compiler), der diese mitliefert. Gockln hilft da auch manchmal. Ist es ein Systemerror, da findest Du hier mehrfach den
Code, um das eine Klartextmeldung draus zu machen, arbeite momentan überwiegend unter Linux, hab den deshalb gerade
nicht zur Verfügung.

Gruß
Thomas

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 13.03.2014 18:51
von HeX0R
MSDN hat geschrieben:ERROR_NO_UNICODE_TRANSLATION

1113 (0x459)

No mapping for the Unicode character exists in the target multi-byte code page.
Quelle: http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 13.03.2014 20:41
von Pelagio
Hallo ts-soft,
ich wollte mich jedenfalls bedanken, das Du bis zu diesem Punkt deiner Möglichkeiten mir helfen konntest. DANKE.

Hallo HeXOR,
Danke für die Hilfe und natürlich besonders für den Link, ich habe das Ding nicht gefunden trotz intensiver Suche.
Ich werde Ihn mir auf alle Fälle merken für die Zukunft. DANKE!
Ich muss aber auch gestehen das ich mir nicht vorstellen kann welche Aussage der Fehler besagt.
wenn ich ihn übersetzte (Es existiert keine Zuordnung für das Unicode-Zeichen in der Ziel-Multi-Byte-Codepage), sagt mir dies nichts.
Ich habe eine Servernamen ohne Sonderzeichen '[\\]sdwobm03' und übergebe diese als Pointer (@ServerName) .

Code: Alles auswählen

NetUserEnum_(@ServerName, 3, 0, @*bufptr, #MAX_PREFERRED_LENGTH, @entriesread, @totalentries, 0)
Wenn ich statt @ServerName '0' angebe bekomme ich alle internen Daten des Computers ansonsten '1113'.

Re: Äquivalent zu 'Net User / Net Group'

Verfasst: 13.03.2014 21:09
von ts-soft
Schalt doch einfach die CompilerOption UNICODE an. Das sollte eigentlich standard sein, vor allem wenn man
Systemtools entwickelt. Windows, genauso wie Linux und MacOS, arbeiten alle im Unicode-Modus, seit Windows 2000.

Oder so:

Code: Alles auswählen

Import "Netapi32.lib"
  NetUserEnum(servername.p-Unicode, level.l, filter.l, *bufptr, prefmaxlen.l, *entriesread, *totalentries, *resume_handle)
EndImport