![]() |
Re: Feststellen, ob Benutzer angemeldet ist
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.
|
Re: Feststellen, ob Benutzer angemeldet ist
Zitat:
Greetz alcaeus |
Re: Feststellen, ob Benutzer angemeldet ist
Äh.. hallo?? Hit me, kill me, but don't ignore me!! ;)
Ich hab doch schon geschrieben: Zitat:
Deswegen hab ich dir auch schon die zwei API-Funktionen ![]() ![]() |
Re: Feststellen, ob Benutzer angemeldet ist
nur wie binde ich diese Befehle von Windows in Delphi ein? Ich habe in dem Bereich keinerlei Erfahrung! :(
|
Re: Feststellen, ob Benutzer angemeldet ist
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:
![]() |
Re: Feststellen, ob Benutzer angemeldet ist
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 :bounce2: :bounce2: :bounce2: , 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 |
Re: Feststellen, ob Benutzer angemeldet ist
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. |
Re: Feststellen, ob Benutzer angemeldet ist
In der JwaNtSecApi.pas habe ich jetzt folgende Funktion gefunden:
Delphi-Quellcode:
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.
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; Weiß einer, wie man die o.g. Prozedur aufruft? |
Re: Feststellen, ob Benutzer angemeldet ist
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:
Delphi-Quellcode:
Wie spreche ich diese Funktion an und wie werte ich aus, ob ein Benutzer angemeldet ist?
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; Puuh :duck: hatte mir das gar nicht so kompliziert vorgestellt, zu erfahren, ob ein Benutzer angemeldet ist. Bin für jede Hilfe sehr dankbar! :bounce2: |
Re: Feststellen, ob Benutzer angemeldet ist
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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