AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Feststellen, ob Benutzer angemeldet ist
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen, ob Benutzer angemeldet ist

Ein Thema von rainerkunze124 · begonnen am 29. Dez 2004 · letzter Beitrag vom 26. Nov 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 19. Jan 2005, 19:13
könntest du dir nicht einfach alle prozesse auflisten lassen mit dem dazugehörigen User (also unter welchem user das ganze läuft)? Dann könnntest du unter den usern die sich da ergeben prüfen welches wirkliche user sind und welches System-User sind.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 19. Jan 2005, 19:17
Zitat von rainerkunze124:
Und jetzt soll das Programm einfach nur erfahren können, ob ein Benutzer angemeldet ist oder nicht.
Deswegen frage ich nach dem Wert, den GetUserName hat, wenn keiner angemeldet ist.
Hast du denn schon mal versucht, einen Dienst zu schreiben, der den Rueckgabewert der Funktion in eine INI-Datei auf C: schreibt? Evtl. findest du ja so raus was rauskommt, was denkst du was andere Leute tun wuerden, um es zu erfahren?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 19. Jan 2005, 19:52
Äh.. hallo?? Hit me, kill me, but don't ignore me!!

Ich hab doch schon geschrieben:
Zitat von Motzi:
GetUserName holt sich den Usernamen aus dem Token des aktuellen Prozesses - sprich du bekommst den Benutzernamen des Kontos unter dem dein Programm läuft..!
Bei deinem Service wird GetUserName also vermutlich "System" liefern..!

Deswegen hab ich dir auch schon die zwei API-Funktionen MSDN-Library durchsuchenLsaEnumerateLogonSessions und MSDN-Library durchsuchenLsaGetLogonSessionData geliefert. Wenn du dir die mal anschaust wirst du feststellen, dass du damit ziemlich genau das machen kannst was du willst!
Manuel Pöter
  Mit Zitat antworten Zitat
rainerkunze124

Registriert seit: 1. Okt 2004
Ort: SH
56 Beiträge
 
#14

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 20. Jan 2005, 21:30
nur wie binde ich diese Befehle von Windows in Delphi ein? Ich habe in dem Bereich keinerlei Erfahrung!
Delphi 7 Enterprise - Jedi JCL & JVCL - Indy 10
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 20. Jan 2005, 23:42
Ja, die Delphi-Units enhalten leider keine Übersetzungen der benötigten Header-Files. Aber zum Glück gibt es ja die Übersetzungen von Marcel van Brakel welche man hier findet: http://members.chello.nl/m.vanbrakel2/ Dort ladest du dir die win32api.zip runter, entpackst sie und findest in der Unit JwaNtSecApi.pas alles was du brauchst.
Manuel Pöter
  Mit Zitat antworten Zitat
rainerkunze124

Registriert seit: 1. Okt 2004
Ort: SH
56 Beiträge
 
#16

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 8. Feb 2005, 16:24
Danke für deinen Tip, wie benutze ich denn die Komponenten?
Bzw. gibt es eine Hilfe, in der die Funktionen erklärt sind?

Oder kann mir einer, das wär total nett , einen Codeschnipsel senden, mit dem mein Programm (ein System Service) den aktuellen UserName herausfindet bzw. einen bestimmten Wert liefert, wenn alle User abgemeldet sind?

Viele Grüße,

Rainer
Delphi 7 Enterprise - Jedi JCL & JVCL - Indy 10
  Mit Zitat antworten Zitat
rainerkunze124

Registriert seit: 1. Okt 2004
Ort: SH
56 Beiträge
 
#17

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 8. Feb 2005, 16:28
Wenn es hilft:

Ich brauche diesen Code, weil Win2000, wenn ich EWX_LOGOFF von meinem Service aus sende, sich abmeldet. Wenn der User abgemeldet ist und EWX_LOGOFF nochmal gesendet wird (weil ein Netzwerkbefehl kommt), dann fährt sich Win2000 Pro herunter. Deswegen bräuchte ich eine Funktion, mit der der Service nachgucken kann, ob sich der User bereits abgemeldet hat bzw. noch im Abmeldevorgang ist.
Delphi 7 Enterprise - Jedi JCL & JVCL - Indy 10
  Mit Zitat antworten Zitat
rainerkunze124

Registriert seit: 1. Okt 2004
Ort: SH
56 Beiträge
 
#18

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 8. Feb 2005, 19:01
In der JwaNtSecApi.pas habe ich jetzt folgende Funktion gefunden:

Delphi-Quellcode:
function LsaLogonUser(LsaHandle: HANDLE; const OriginName: LSA_STRING;
  LogonType: SECURITY_LOGON_TYPE; AuthenticationPackage: ULONG;
  AuthenticationInformation: PVOID; AuthenticationInformationLength: ULONG;
  LocalGroups: PTOKEN_GROUPS; SourceContext: PTOKEN_SOURCE;
  var ProfileBuffer: PVOID; var ProfileBufferLength: ULONG; var LogonId: LUID;
  var Token: HANDLE; var Quotas: QUOTA_LIMITS; var SubStatus: NTSTATUS): NTSTATUS; stdcall;
Allerdings weiß ich so erstmal damit nichts anzufangen, weil es so viele Parameter gibt und das Ergebnis auch kein Datentyp ist, mit dem ich was anfangen kann.

Weiß einer, wie man die o.g. Prozedur aufruft?
Delphi 7 Enterprise - Jedi JCL & JVCL - Indy 10
  Mit Zitat antworten Zitat
rainerkunze124

Registriert seit: 1. Okt 2004
Ort: SH
56 Beiträge
 
#19

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 19. Apr 2005, 20:14
Beschäftige mich immer noch mit dem leidigen Thema, da bis jetzt nichts meinen Erwartungen entspricht bzw. manche Prozeduren einfach nur unüberschaubar sind.

Kennt keiner einen Codeschnipsel, der mir sagt, ob definitiv ein Benutzer angemeldet ist (also nicht das Anmeldefenster von 2000/XP mit Benutzername/Passwort angezeigt wird)?
Motzi hatte folgendes geschrieben:
Zitat:
Deswegen hab ich dir auch schon die zwei API-Funktionen Suche im Microsoft Developers NetworkLsaEnumerateLogonSessions und Suche im Microsoft Developers NetworkLsaGetLogonSessionData geliefert. Wenn du dir die mal anschaust wirst du feststellen, dass du damit ziemlich genau das machen kannst was du willst!
Wie werden die denn in Delphi interpretiert? Etwa so aus der JwaNtSecApi der win32api von Marcel van Brakel?:

Delphi-Quellcode:
function LsaLogonUser(LsaHandle: HANDLE; const OriginName: LSA_STRING;
  LogonType: SECURITY_LOGON_TYPE; AuthenticationPackage: ULONG;
  AuthenticationInformation: PVOID; AuthenticationInformationLength: ULONG;
  LocalGroups: PTOKEN_GROUPS; SourceContext: PTOKEN_SOURCE;
  var ProfileBuffer: PVOID; var ProfileBufferLength: ULONG; var LogonId: LUID;
  var Token: HANDLE; var Quotas: QUOTA_LIMITS; var SubStatus: NTSTATUS): NTSTATUS; stdcall;
Wie spreche ich diese Funktion an und wie werte ich aus, ob ein Benutzer angemeldet ist?

Puuh hatte mir das gar nicht so kompliziert vorgestellt, zu erfahren, ob ein Benutzer angemeldet ist.

Bin für jede Hilfe sehr dankbar!
Delphi 7 Enterprise - Jedi JCL & JVCL - Indy 10
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Feststellen, ob Benutzer angemeldet ist

  Alt 19. Apr 2005, 22:05
Man kann auch einfach die WinStats enumerieren und gucken, ob eine WinStat0 dabei ist, das ist die einzige interaktive WinStat die es gibt.

Delphi-Quellcode:
procedure EnumWinStats(WindowsStation: PChar; lParam: LPARAM); stdcall;
begin
  Form1.ListBox1.Items.Add(WindowsStation);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindowStations(@EnumWinStats, 0);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:43 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