AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi benutzerkonten über das netztwerk abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

benutzerkonten über das netztwerk abfragen

Ein Thema von Harry M. · begonnen am 13. Feb 2005 · letzter Beitrag vom 19. Feb 2005
Antwort Antwort
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#1

benutzerkonten über das netztwerk abfragen

  Alt 13. Feb 2005, 16:09
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.
Harry
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: benutzerkonten über das netztwerk abfragen

  Alt 13. Feb 2005, 16:21
Geht mit meinem XP Usermanager. Sourcen liegen bei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#3

Re: benutzerkonten über das netztwerk abfragen

  Alt 13. Feb 2005, 16:56
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
Harry
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#4

Re: benutzerkonten über das netztwerk abfragen

  Alt 18. Feb 2005, 09:58
hi luckie

http://www.smiliearchiv.com/smilies/...childer_48.gif

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.

http://www.smiliearchiv.com/smilies/...childer_37.gif

gruß delphicus
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: benutzerkonten über das netztwerk abfragen

  Alt 18. Feb 2005, 16:35
Wie soll ich dir da jetzt helfen? GetUsers liefert eine dynamischen String Array mit den gefundenen Benutzerkonten zurück.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#6

Re: benutzerkonten über das netztwerk abfragen

  Alt 18. Feb 2005, 17:26
soweit habe ich das ja auch verstanden, nur wenn ich es compilieren will gibts mecker von ekker. also hier erstmal mein quelltext:
Delphi-Quellcode:
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.
und hier sind die compilermeldungen:
Delphi-Quellcode:
[Fehler] Unit1.pas(23): Undefinierter Bezeichner: 'TStringArray'
[Fataler Fehler] Unit1.pas(33): Datei nicht gefunden: 'MpuWinNT.pas.dcu'
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: benutzerkonten über das netztwerk abfragen

  Alt 18. Feb 2005, 18:44
Zitat von delphicus:
und hier sind die compilermeldungen:
Delphi-Quellcode:
[Fehler] Unit1.pas(23): Undefinierter Bezeichner: 'TStringArray'
[Fataler Fehler] Unit1.pas(33): Datei nicht gefunden: 'MpuWinNT.pas.dcu'
Ich will ja nichts sagen, aber wenn du schon die Unit auseinander reisß, dann musst du schon die nötigen Deklarationen mitnehmen. TStringArray sollte in der Unit NTUser.pas definiert sein. Einfach mal reingucken.

Und zum zweiten Fehler sage ich gar nichts.

Und dann überleg dir mal, ob das so funktionieren kann:
Listbox1.Items.Add(GetUsers,'192.168.0.10'); wenn die Methode Add einen String erwartet und GetUsers ein Array vom Datentyp TUsers zurückliefert.

Mein Tipp: Mach dich erstmal mit den Grundlagen vertraut. Zu mindest dynamische Arrays und Schleifen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#8

Re: benutzerkonten über das netztwerk abfragen

  Alt 19. Feb 2005, 12:34
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:
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.
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.http://www.smiliearchiv.com/smilies/...childer_78.gif
Harry
Gruß Harry
www.H-Soft.info
  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 04:27 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