![]() |
benutzerkonten über das netztwerk abfragen
wie kann ich mit delphi festellten ob IPC auf einem netzwerkrechner verfügbar ist und wenn ja über welche konten der rechner verfügt also unterwelchen konto ich mich anmelden könnte.
|
Re: benutzerkonten über das netztwerk abfragen
Geht mit meinem
![]() |
Re: benutzerkonten über das netztwerk abfragen
hi luckie...
bisher waren mir dein source immer ne nummer zugroß für mich (im verstehen, nicht die menge) ich versuche es aber trozdem thx |
Re: benutzerkonten über das netztwerk abfragen
hi luckie
![]() habe nun seit geraumer zeit dein usermgr am wickel. ab wie ich schon befürchte hatte..... steige ich nicht durch. ich habe die funktion GetUsers in meinem code und die MpuWinNT.pas einegbunden. aber wiklich schlauer bin ich nicht geworden. hilf mir bitte!!! ich möcht doch einfach nur die benutzerkonten in einer listbox ausgeben. ![]() gruß delphicus |
Re: benutzerkonten über das netztwerk abfragen
Wie soll ich dir da jetzt helfen? GetUsers liefert eine dynamischen String Array mit den gefundenen Benutzerkonten zurück.
|
Re: benutzerkonten über das netztwerk abfragen
soweit habe ich das ja auch verstanden, nur wenn ich es compilieren will gibts mecker von ekker. also hier erstmal mein quelltext:
Delphi-Quellcode:
und hier sind die compilermeldungen:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TUser = packed record Name: WideString; UserGroups: TStringArray; end; TUsers = array of TUser; var Form1: TForm1; implementation {$R *.dfm} uses MpuWinNT.pas; function GetUsers(const Computer: WideString): TUsers; var Users : TStringArray; i, j : Integer; ui3 : TUserInfo3; UserGroups : TStringArray; begin Users := EnumUsers(Computer, FILTER_NORMAL_ACCOUNT); SetLength(Result, Length(Users)); for i := 0 to Length(Users) - 1 do begin // reset array -> delete old values SetLength(UserGroups, 0); //GetUserInfo(Computer, Users[i], ui3); Result[i].Name := ui3.usri3_name; //UserGroups := GetUserGroups(Computer, Users[i]); SetLength(Result[i].UserGroups, Length(UserGroups)); for j := 0 to Length(UserGroups) - 1 do Result[i].UserGroups[j] := UserGroups[j]; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.Items.Add(GetUsers,'192.168.0.10'); end; end.
Delphi-Quellcode:
[Fehler] Unit1.pas(23): Undefinierter Bezeichner: 'TStringArray'
[Fataler Fehler] Unit1.pas(33): Datei nicht gefunden: 'MpuWinNT.pas.dcu' |
Re: benutzerkonten über das netztwerk abfragen
Zitat:
Und zum zweiten Fehler sage ich gar nichts. :roll: Und dann überleg dir mal, ob das so funktionieren kann:
Delphi-Quellcode:
wenn die Methode Add einen String erwartet und GetUsers ein Array vom Datentyp TUsers zurückliefert.
Listbox1.Items.Add(GetUsers,'192.168.0.10');
Mein Tipp: Mach dich erstmal mit den Grundlagen vertraut. Zu mindest dynamische Arrays und Schleifen. |
Re: benutzerkonten über das netztwerk abfragen
ich habe mir das jetzt nochmal zu gemüte geführt. wie ich die deklaration in aus ntuser.pas übersehn konnt ist mir nicht recht klar. aber naja.... ich habe jetzt mal noch einige änderungen vorgenommen. nun kann man es compilieren.
Delphi-Quellcode:
aber so ganz richtig ist das immer noch nicht. wenn man das prog starte und ausführt, bleibt es hängen ohne debuggermeldung. es lässt sich dann auch nicht mehr schließen. deinen tipp mich erstmal mit den grundlagen vertraut zu machen über dynamische arrays und schleifen würde ich gern beherzigen. nur ich habe füher immer schon weitergeblättert (als ich noch das ein oder ander delphi-buch laß) wenn es um arrays und schleifen ging. so recht habe ich das nie verstanden. andere haben problme mit mathematischen formeln oder in chemie und bei mir sind es nunmal arryas und schleifen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TStringArray = array of WideString; type TUser = packed record Name: WideString; UserGroups: TStringArray; end; TUsers = array of TUser; var Form1: TForm1; Computer : WideString; function EnumUsers(const Server: WideString; filter: DWORD): TStringArray; implementation {$R *.dfm} uses MpuWinNT; function EnumUsers(const Server: WideString; filter: DWORD): TStringArray; var ui1, pWork : Pointer; EntriesRead, EntriesTotal: DWORD; NetError : DWORD; Loop : Integer; begin 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; function GetUsers(const Computer: WideString): TUsers; var Users : TStringArray; i, j : Integer; ui3 : TUserInfo3; UserGroups : TStringArray; begin Users := EnumUsers(Computer, FILTER_NORMAL_ACCOUNT); SetLength(Result, Length(Users)); for i := 0 to Length(Users) - 1 do begin // reset array -> delete old values SetLength(UserGroups, 0); //GetUserInfo(Computer, Users[i], ui3); Result[i].Name := ui3.usri3_name; //UserGroups := GetUserGroups(Computer, Users[i]); SetLength(Result[i].UserGroups, Length(UserGroups)); for j := 0 to Length(UserGroups) - 1 do Result[i].UserGroups[j] := UserGroups[j]; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Computer := '192.168.0.10'; GetUsers(Computer); end; end. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz