AGB  ·  Datenschutz  ·  Impressum  







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

Domain Name auslesen

Ein Thema von xbu58 · begonnen am 10. Dez 2002 · letzter Beitrag vom 29. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#1

Domain Name auslesen

  Alt 10. Dez 2002, 20:38
Hallo Chris

Danke für den Hinweis. Habe nicht sofort verstanden, was Du mit einem Thread meinst! Aber ich denke, dass ich dafür ein neues Thema öffnen soll. (na ja immer diese Neulinge.... ) Als hier nochmals die Frage

Ich suche nach einer Möglichkeit, um die Windows-Domain-User auszulesen. Ich habe zwar die Funktionen für das auslesen der lokalen User gefunden (NetQueryDisplayInformation). Damit sollte man auch die Domain-User auslesen können. Nun fehlt mir aber eine Möglichkeit, wie man den Domain-Name auslesen kann.

Kann Du mir da weiter helfen?

Gruss
Xaver
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 10. Dez 2002, 22:47
Moin Xaver,

ich hab' mal ein kleines Beispiel erstellt:

Delphi-Quellcode:
var
  pwuiWork : PWKSTA_USER_INFO_1;

begin
  if NetWkstaUserGetInfo(nil,1,@pwuiWork) = NErr_Success then
  begin
    try
      ShowMessage(
        WideCharToString(pwuiWork.wkui1_logon_domain)+'\'+
        WideCharToString(pwuiWork.wkui1_username)
        );
    finally
      NetApiBufferFree(pwuiWork);
    end;
  end;
end;
Anhand des Usernamens kann man ja nicht auf die Domain schliessen, da ja ein Name in mehreren Domänen vorhanden sein kann.
Dieses Beispiel gibt nur die Domäne und den Usernamen des gerade angemeldeten Users zurück.
Bliebe noch zu erwähnen, dass diese Funktion im Kontext des angemeldeten Users aufgerufen werden muss. Ein Aufruf aus einem Programm heraus, dass im Kontext eines anderen Users läuft (z.B. über SU Dienst gestartet) könnte falsche Werte zurückliefern (ich hab's noch nicht ausprobiert)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#3

Domain name

  Alt 11. Dez 2002, 05:58
Hallo Chris

Danke für Deine Hilfe!

Sieht gut aus. Ich denke damit sollte ich mein Problem lösen können.


Gruss
Xaver
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#4

Domain-Name auslesen

  Alt 12. Dez 2002, 19:15
Hallo Chris

Die Funktion NetWkstaUserGetInfo funktioniert zwar korrekt, gibt mir aber den Domain-Servername und nicht den Domain-Name zurück. Das würde für das Auslesen der User reichen, was ich in der Zwischenzeit auch mache. Das Problem ist jedoch, dass ich den Domain-Name ebenfalls benötige. Das ganze hängt mit dem SQL-Server zusammen, in dem man für die NT-Authentifizierung den Domain-Name angeben muss. Also habe ich jetzt zwar die Users muss denen aber den Domain-Name manuel davor setzen, was nicht gerade elegant ist.
Ich habe es auch schon mit der Funktion LookupAccountSid versucht. Mit der bekomme ich den Stations-Name, auf der ich das Programm ausführe. Geht also auch nicht richtig.
Mit NetServerEnum kann ich ebenfalls den Server-Name auslesen. Ich kann sogar einschränken, dass nur die Server mit SQL-Server zurückgegeben werden. Das nützt natürlich nicht allzuviel, da der SQL-Server nicht zwingend ein PDC sein muss.

Hast Du noch eine Idee, die mir beim Suchen weiter hilft?

Gruss
Xaver
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 12. Dez 2002, 19:50
Moin Xaver,

irgendwie hab' ich jetzt ein kleines Verständnisproblem...
Die Struktur WKSTA_USER_INFO1 habe ich, folgendermassen aus der Header Datei übersetzt:

Delphi-Quellcode:
  PWKSTA_USER_INFO_1 = ^WKSTA_USER_INFO_1;
  WKSTA_USER_INFO_1 =
    packed record
      wkui1_username : PWChar;
      wkui1_logon_domain : PWChar;
      wkui1_oth_domains : PWChar;
      wkui1_logon_server : PWChar;
    end;
Hierbei ist wkui1_username der Accountname des Users, wkui1_logon_domain, die Domäne, an der der User angemeldet ist, wkui1_oth_domains eine mit Blanks getrennte Domänen Liste, und wkui1_logon_server der Server, der den User authentifiziert hat.

Somit müsste der Member wkui1_logon_domain genau das sein, was Du brauchst, ausser natürlich
  1. die Funktion gibt nicht das zurück, was dokumentiert ist (ich hab' hier leider keine Domäne, ergo ist wkui1_logon_domain = wkui1_logon_server)
  2. der user ist lokal angemeldet, dann ist es das Gleiche als hätte man keine Domäne

Könntest Du das bitte nochmal überprüfen? Bislang haben die Net Funktionen eigentlich keinerlei Probleme gemacht.

Oder hab' ich jetzt nicht ganz verstanden, was Du vorhast?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 12. Dez 2002, 20:10
Hallo Chris

Ich habe es genau so implementiert, wie Du das aufgeführt hast. Habe dazu auch noch die h-Files vom Lanmanager herunter geholt (http://files.ruca.ua.ac.be/pub/lang/msvc2/include) um sicher zu sein, das ich alles richtg verstanden habe, wie es im Help beschrieben ist. Genau wie Du, konnte ich das auch nicht verstehen. Für mich wäre auch logisch, dass im Feld wkui1_logon_domain der Domain-Name drin steht. Was ich mir auch schon überlegt habe, ist dass das Problem damit zusammenhängt, dass wir in der Firma zwar einen PDC haben, die Workstation aber nicht an der Domäne angemeldet werden. Diese Konfiguration stört aber den Enterprise Manager vom SQL-Server nicht. Der zeigt trotzdem den korrekten Domain-Name an. Deshalb denke ich, muss es eine Möglichkeit geben, diesen Name aus dem System zu lesen.

Ich habe hier leider ebenfalls keine Domäne und kann das jeweils nur im Büro prüfen. Da das Projekt momentan noch nicht so dringend ist, entwickle ich das ganze zuhause und sehe dann am nächsten Tag, ob das funktioniert hat, was ich so gemacht habe.

Gruss
Xaver
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 12. Dez 2002, 20:15
Moin Xaver,

nur zum Verständnis:

Melden sich die User jetzt an der Domäne an oder nicht?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#8
  Alt 12. Dez 2002, 20:24
Hallo Chris

Sie melden sich nicht an der Domain an. Alle Rechner sind als Mitglied der Arbeitsgruppe definiert, wobei der Arbeitsgruppen-Name gleich wie der Domain-Name ist, z.B. Domain-Name: VIDDOMAIN; Im Feld Mitgied von Arbeitsgruppe (Netzwerkeinstellungen) steht ebenfalls VIDDOMAIN. Also erfolgt die Anmeldung so wie ich das sehe, lokal.

Gruss
Xaver
  Mit Zitat antworten Zitat
xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#9
  Alt 12. Dez 2002, 20:46
Hallo Chirs

Ich glaube ich habs gefunden, wie die Microsoftis das mit dem Domain-Name im SQL-Server Enterprise Manager machen. Die Lesen es nicht aus dem Netzwerk heraus, sondern haben eine Stored Procedure im SQL-Server definiert, mit welcher sie den Domain des Servers abfragen. Dadurch entfällt natürlich das Problem der lokalen Anmeldung. Ist ja eigentlich logisch, dass in Falle eines SQL-Zugriffs nicht die Domain-Zugehörigkeit der Workstation massgebend ist sondern die des SQL-Server bzw. des Users auf dem SQL-Server. Manchmal sind die Microsoftis schlauer als das eigentlich erlaupt ist

Werde das morgen einmal auf dem Firmennetz prüfen. Lokal bekomme ich auf jedenfall das korrekte ergebnis.

Gruss
Xaver
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 12. Dez 2002, 20:55
Moin Xaver,

dann funktioniert NetWkstaUserGetInfo also korrekt.
Bei lokaler Anmeldung wird halt der Rechnername als Domain angegeben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:36 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