AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Liste aller Windows-Benutzer

Ein Thema von daniel8520 · begonnen am 18. Nov 2005 · letzter Beitrag vom 19. Nov 2005
Antwort Antwort
daniel8520
(Gast)

n/a Beiträge
 
#1

Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 19:11
Hallo DPler,

ich möchte gang gern mein Programm dazu bewegen mir eine Liste aller Windows-Benutzer anzuzeigen. Es geht hierbei um Win XP Home.
Da ich ja ein ordentliches Mitglied bin, hab ich auch schon die Suche benutzt, aber das hat leider alles nicht funktioniert.
Wie würdet ihr es denn machen?

Bitte helft mir.


Danke im Vorraus!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#2

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 19:46
Hast du dir mal Luckies XP-UserManager gesehn?

http://www.delphipraxis.net/internal...ght=%2Amanager

Ich vermute also mal, daß sich eventuell etwas auf seiner Seite finden läßt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 20:00
Hi,
guck mal nach [cl="NetUserEnum"]NetUserEnum[/cl].

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 20:47
Die entsprechende Unit habe ich erstmal von meinem Webspace genommen, da ich sie zur Zeit umstrukturiere.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#5

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 22:27
Genau diese NetUserEnum-Variante hab ich ausprobiert. Hat aber irgendwie nicht geklappt.
Und das Luckie die Datei vom Server genommen musste ich leider auch schon feststellen.

  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#6

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 22:38
Damit sollte es geht:

Delphi-Quellcode:
var
  EntiesRead: DWORD;
  TotalEntries: DWORD;
  UserInfo: lpUSER_INFO_1;
  lpBuffer: Pointer;
  ResumeHandle: DWORD;
  Counter: Integer;
  NetApiStatus: LongWord;
repeat
    NetApiStatus := NetUserEnum(nil, 1, 0, lpBuffer, 0, EntiesRead,
      TotalEntries, ResumeHandle);
    UserInfo := lpBuffer;
    for Counter := 0 to EntiesRead - 1 do
    begin
      listbox1.Items.Add(WideCharToString(UserInfo^.usri1_name));
      Inc(UserInfo);
    end;
    NetApiBufferFree(lpBuffer);
  until (NetApiStatus <> ERROR_MORE_DATA);
MfG Jonas
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Liste aller Windows-Benutzer

  Alt 18. Nov 2005, 22:47
Ich habe den Source gerade vor mir:

Delphi-Quellcode:
function NetUserEnum(servername: LPCWSTR; level: DWORD; filter: DWORD; var
  buf: Pointer; prefmaxlen: DWORD; var entriesred: DWORD; var totalentries:
  DWORD; resumehandle: PDWORD): NET_API_STATUS; stdcall;

//...

implementation

const
  netapi32lib = 'netapi32.dll';

function NetUserEnum; external netapi32lib name 'NetUserEnum';
Delphi-Quellcode:
type
  NET_API_STATUS = DWORD;
  TStringArray = array of WideString;

const
  NERR_Success = 0;
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : EnumUsers
// Comment : Enumerates all users on the local machine

function EnumUsers(const Server: WideString; filter: DWORD): TStringArray;
var
  ui1, pWork : Pointer;
  EntriesRead, EntriesTotal: DWORD;
  NetError : DWORD;
  Loop : Integer;
begin
  ui1 := nil;
  pWork := nil;
  if Server <> 'then
  begin
    try
      NetError := NetUserEnum(PWideChar(Server), 0, filter, ui1,
        MAX_PREFERRED_LENGTH, EntriesRead, EntriesTotal, nil);
      if (NetError = NERR_SUCCESS) and (EntriesRead > 0) then
      begin
        pWork := ui1;
        SetLength(Result, EntriesRead);
        for Loop := 0 to EntriesRead - 1 do
        begin
          Result[Loop] := PUserInfo1(ui1)^.usri1_name;
          Inc(Integer(ui1), sizeof(Pointer));
        end;
      end;
    finally
      NetApiBufferFree(pWork);
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#8

Re: Liste aller Windows-Benutzer

  Alt 19. Nov 2005, 09:35
@MisterNiceGuy

[Fehler] Message.pas(30): E2003 Undefinierter Bezeichner: 'lpUSER_INFO_1'
[Fehler] Message.pas(37): E2003 Undefinierter Bezeichner: 'NetUserEnum'

  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#9

Re: Liste aller Windows-Benutzer

  Alt 19. Nov 2005, 09:43
Hab's jetzt hinbekommen!

Vielen Dank!

  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#10

Re: Liste aller Windows-Benutzer

  Alt 19. Nov 2005, 10:34
Nur der Vollständigkeit halber:

Du musst Folgendes noch definieren:

Delphi-Quellcode:
type
  NET_API_STATUS = Integer;

function NetUserChangePassword(domainname, username, oldpassword,
  newpassword: LPCWSTR): NET_API_STATUS;
  stdcall; external 'netapi32.dll';
  
type
  USER_INFO_1 = record
    usri1_name: LPWSTR;
    usri1_password: LPWSTR;
    usri1_password_age: DWORD;
    usri1_priv: DWORD;
    usri1_home_dir: LPWSTR;
    usri1_comment: LPWSTR;
    usri1_flags: DWORD;
    usri1_script_path: LPWSTR;
  end;
  lpUSER_INFO_1 = ^USER_INFO_1;

function NetUserEnum(ServerName: PWideChar;
  Level,
  Filter: DWORD;
  var Buffer: Pointer;
  PrefMaxLen: DWORD;
  var EntriesRead,
  TotalEntries,
  ResumeHandle: DWORD): Longword; stdcall; external 'netapi32.dll';

function NetApiBufferFree(pBuffer: PByte): Longint; stdcall; external
'netapi32.dll';
Hatte ich vergessen
MfG Jonas
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz