Ermittelung Passwortablaufdatum eines Domainusers (NetUserGetInfo)



  • Hallo Gemeinde,

    wie der Titel schon beschreibt, möchte ich das Ablaufzeitstempel eines User (in der Domain) ermitteln und zwar so ähnlich wie es Kommandozeilenbefehl "net user XYZ /domain" macht.

    Ein Ausführen dieses Befehls mit system() oder CreateProcess() und das Parsen der Ausgaben ist nicht die Lösung, die ich suche. Es soll direkt mit WinAPI/Plattform-Befehlen funktionieren.

    Ich habe bereits viel gelesen und mit den Beispielen von NetUserGetInfo/NetGetDcName aus der MSDN-Doku experimentiert. Irgendwo habe ich aber etwas übersehen oder nicht richtig verstanden.

    Test/Zielumgebung ist ein Win7pro-Laptop, an dem ich mich als Benutzer in der Domain anmelde.

    NetGetUserInfo mit NULL im ersten Parameter aufzurufen wäre doch sicher falsch, weil sind der lokale Benutzer gesucht/genommen wird und nicht der Domainuser?

    Da ich den Namen des "Remoteservers" nicht kenne, mus ich den wohl ermitteln. "net user XYZ /domain" ermittelt diesen ja auch irgendwie, da er nicht eingegeben wird. Daher fiel mein Blick auf den Befehl NetGetDCName, der jedoch auch ein Servername als 1.Parameter verlangt.
    Wenn ich NetGetDCName(NULL, myDomain, ...) aufrufe, erhalte ich 2453 als Rückgabewert (= NERR_DCNotFound, "Could not find the domain controller for the domain.") Als Domainnamen habe ich die selbe Zeichenkette verwendet wie ich sie mit "ipconfig /all" unter "Primäres DNS-Suffix" angezeigt bekomme.

    Wäre mein Ansatz:
    (1) NetGetDCName
    (2) NetUserGetInfo
    grundsätzlich richtig oder macht "net user XYZ /domain" eigentlich was ganz anderes?

    Ich bin dankbar für jeden Hinweis, der mich wieder in die richtige Richtung schuppst.


  • Mod

    Ich verwende bei so etwas immer LDAP.

    Der Weg ist hier beschrieben, Du musst das eben nur in COM umsetzen, was aber auch kein Hexenwerk ist.


  • Mod

    Hast Du wirklich gesucht?
    Ich habe eben sofort das hier gefunden:

    http://stackoverflow.com/questions/13116505/how-to-get-password-expiry-date-using-c-win32-api



  • Hallo Martin,

    zunächst vielen Dank für den Tipp.

    Ja, ich habe gesucht. Leider war ich wohl zu sehr auf NetGetuserInfo fixiert und hatte dies daher zwingend in allen meinen Suchanfragen drin.

    Ich habe programmiertechnisch noch nicht bewusst mit COM oder LDAP Berührung gehabt. Wenn Du sagst, dass es mit LDAP einfach und erfolgversprechend funktioniert, dann werde ich mich erstmal in das Thema einarbeiten und ein Paar Anwendungsbeispiele studieren/testen.


Anmelden zum Antworten