Windows Usernames auslesen mit NetUserEnum()
-
hi leute!
Wenn ich NetUserEnum() verwende erhalte ich eine Liste mit allen UserAccounts auf dem System (alle die unter Systemsteuerung -> Computerverwaltung angezeigt werden), also auch kryptische Standard - Accounts wie ASPNET, Hilfeassistent, SUPPORT_362526a8,... (wobei die Namen von System zu System unterschiedlich sind)
Weiss irgend jemand wie bzw. ob ich diese Accounts irgendwie aus dieser Liste herausfiltern kann (evtl. mit einer anderen Funktion). Ich möchte eigentlich nur diese Benutzernamen, die mir unter Systemsteuerung -> Benutzerkonten angezeigt werden.ThanX
mfg martin
-
Die Oberfläche in der Systemsteuerung entscheidet anhand der Gruppenzugehörigkeit, welche Benutzerkonten dort angezeigt werden. Also werden normalerweise dort nur Benutzer, Hauptbenutzer, Administratoren und Gäste angezeigt. Für deine Überprüfung müsstest du wohl ebenso vorgehen und die Gruppenmitgliedschaften auslesen. Eine Möglichkeit wäre, sich mit der Security API rumzuschlagen und sich das auflisten lassen. ( Ein Ähnliches Beispiel zum Auflisten der Gruppenzugehörigkeiten des aktuellen Benutzers gibt es -hier-. Wie man allerdings die Token der Nutzer bekommt ohne sich als derjenige Benutzer anzumelden, weiß ich leider nicht.)
Eine zweite Möglichkeit wäre das Durchsuchen des Registrierungs-Pfades HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users. Denn nur "echte" Benutzer, die sich lokal anmelden können, haben einen entsprechenden F- und V-Eintrag. Allerdings musst du dich in diesem Fall ebenfalls mit der Security API auseinander setzen, da standardmäßig aus Sicherheitsgründen nichtmal der Administrator Zugriffsrechte auf diesen Schlüssel hat. Du müsstest also die Zugriffslisten bearbeiten und hinterher wieder zurücksetzen.
-
worin legst du die liste denn ab?
du hast doch bestimmt ne schleife oder so wo du sie in nem char oder string ablegst
und verarbeitest dann mach doch ne if bedingung rein
so in der art:
while(hfind != INVALID_HANDLE_VALUE) // hier werden die urls zusammengestellt { if ((std::string)fd.cFileName != "." && (std::string)fd.cFileName != ".." && (std::string)fd.cFileName != ".htaccess" && (std::string)fd.cFileName != ".htpasswd" && fd.dwFileAttributes != FILE_ATTRIBUTE_HIDDEN)
dies ist als beispiel anhand eines direktory index
und hier werden nur ergebnisse weiterverarbeitet die nicht ".", "..", ".htaccess" oder ".htpasswd" bzw das dateiattribut hidden(versteckt) enthalten
das lässt sich bestimmt auch in deine funktion einbauen
wenn nicht poste doch mal deine funktion um NetUserEnum()
-
-
qMartin: schon eine Lösung gefunden?
Ich wär' nämlich auch interessiert
-
Mit NetUserGetGroups gucken in welcher Gruppe sich ein Benutzer befindet und dann filtern.
ms-help://MS.PSDK.1033/netmgmt/netmgmt/netusergetgroups.htm
-
Wie krieg' ich aus dem Gruppennamen raus, was das für eine Gruppe ist? Ich müßte ja auf die vordefinierten Gruppen Administrator, Benutzer, Gast abtesten - nur daß die in jedem Land anders heißen..
Bis NetGroupGetInfo hab' ich mich durchgehangelt, aber da komm' ich auch nicht weiter.
-
kennst du http://win32.mvps.org/security/is_admin.html ?
-
Geh über die SIDs. Jede Benutzergruppe hat eine eindeutige SID, die auf jedem System gleich ist.
-
Hmmm ich glaub ich hab Blut geleckt..