Alle Rechner im Netzwerk anzeigen und den derzeit angemeldeten User herausfinden.



  • Hey 😉

    Wie der Titel schon sagt, versuche ich alle Rechner im Netzwerk und den dazu gehörigen, derzeit angemeldeten Benutzer anzeigen zu lassen.
    Alle Rechner im Netzwerk mit Rechnername habe ich bereits mit lm.h hinbekommen.

    Gibt es denn in C++ überhaupt eine Möglichlkeit den aktuell angemeldeten Benutzer eines Rechners im Netzwerk heraus zu finden?
    Ich habe bereits ein Programm in Delphi gefunden, das dies kann, wodurch es rein technisch möglich ist.

    Hat jemand eine Idee?



  • Hallo

    Hat mit C++ oder der VCL des Builders nichts zu tun. Wenn dann eine Bestriebssystemspezifische Funktion, also WinAPI.
    Und wenn du schon ein Delphi-Quellcode dafür hast, dann sollte es doch nicht schwer sein den Code in den Builder zu übernehmen oder nach C++ zu übersetzen.

    bis bald
    akari



  • Da ich jedoch noch nie Delphi gesehen habe, wird das bisschen dauern. 😞
    Hab halt gehofft, dass jemand direkt weiterhelfen kann, denn groß ist der Delphi-Quellcode wirklich nicht.

    Ich denke die richtige Stelle gefunden zu haben:

    index := 0;
      subKeyNameSize := SizeOf(subKeyName);
      WHILE (RegEnumKeyEx(usersKey, index, subKeyName, subKeyNameSize, NIL, NIL, NIL, @lastWriteTime) = ERROR_SUCCESS) DO BEGIN
        IF (lstrcmpi(subKeyName, '.default') <> 0) AND (Pos('Classes', STRING(subKeyName)) = 0) THEN BEGIN
          subAuthorityCount := getvals(subKeyName);
          IF (subAuthorityCount >= 3) THEN BEGIN
            subAuthorityCount := subAuthorityCount - 2;
            IF (subAuthorityCount < 2) THEN subAuthorityCount := 2;
            authority.Value[5] := PByte(@authorityVal)^;
            authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^;
            authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^;
            authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^;
            authority.Value[1] := 0;
            authority.Value[0] := 0;
            sid := NIL;
            userNameSize := MAX_NAME_STRING;
            domainNameSize := MAX_NAME_STRING;
            IF AllocateAndInitializeSid(authority, subAuthorityCount, subAuthorityVal[0], subAuthorityVal[1], subAuthorityVal[2], subAuthorityVal[3], subAuthorityVal[4], subAuthorityVal[5], subAuthorityVal[6], subAuthorityVal[7], sid) THEN BEGIN
              IF LookupAccountSid(Pchar(ServerName), sid, userName, userNameSize, domainName, domainNameSize, sidType) THEN BEGIN
                setlength(result, length(result) + 1);
                result[length(result) - 1] := STRING(domainName) + '\' + STRING(userName);
              END;
            END;
            IF Assigned(sid) THEN FreeSid(sid);
          END;
        END;
        subKeyNameSize := SizeOf(subKeyName);
        Inc(index);
      END;
    

    Wen es interessiert und eventuell von Delphi nen Plan hat, der kann sich ja mal mit beschäftigen. 😉
    Ich komme selbst leider erst nächste Woche dazu... -.-


Anmelden zum Antworten