![]() |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Nein, du bist mit deinen Gedanken weit von der Erde entfernt, wo das Problem liegt :angel:
Es wurde einfach in der Groß-Kleinschreibung unterschieden. Das ist aber bei Prozessnamen egal. :wall: Wenn du Update machst, sollte es funktionieren. :cheers: |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Zitat:
Zitat:
Also es lässt sich nun kompilieren und ausführen. Und er scheint auch einen Benutzernamen zu bekommen ;) Habe leider es nur nicht in der Aufregung getestet :oops: Wird Freitag wahrscheinlich erst was xD MfG xZise |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Hallo,
ich wollte gerade mal meinen Serivce wieder testen und auf Vordermann bringen, und dann habe ich das Problem, das die JWSCL meint, es gäbe die "Explorer.exe" nicht:
Delphi-Quellcode:
Obwohl ich eindeutig jetzt mit den Rechner schreibe, und wie man sieht :) Es funktioniert, mit Explorer.exe!
An Exception of type EJwsclProcessNotFound was raised.
(Data was given by programmer and can vary from actual source.) Source method....: CreateCompatibilityQueryUserToken Source class.....: TJwSecurityToken Source file......: JwsclToken.pas Source line......: 0 Message : The process "EXPLORER.EXE" could not be found. MfG xZise |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Ich vermute mal, dass CreateToolHelp32SnapShot nicht alle Prozesse von allen Sessions auflistet.
Du kannst ![]() EDIT: In der Tat, es handelt sich bei der CreateCompatibilityQueryUserToken um eine Funktion, die nur für WindowsNT, 2000 und XP überhaupt funktioniert und dann auch nur für den ersten eingeloggten Benutzer, weil dieser eben in derselben Session des Dienstes (Session 0) sich befindet. Alles andere funktioniert nicht. |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Es war ganz einfach (vermute ich): Da ich die falschen Quellen genommen habe, funktionierte das auch dann nicht, wenn einer angemeldet ist. Ansonsten ist mir das egal ;)
MfG xZise |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Zitat:
|
Re: Angemeldeten Benutzer aus Dienst ermitteln
Also:
Es gibt verschiedene Stadien:
Im zweiten hingegen sucht JWSCL nach "Explorer.exe", welches es aber nicht findet bzw. finden kann, also ist die Fehlermeldung angebracht (oder geht das auch "netter"?). Und im letzten Stadium erkennt die JWSCL die "Explorer.exe" und kann dessen Benutzer einwandfrei ausgeben :) MfG xZise |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Ich habe dieses Artikel mal darüber geschrieben.
![]() |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Hallo,
also ich verwende inzwischen folgenden Code:
Delphi-Quellcode:
Und bei dem Aufruf von „TJwSecurityToken.CreateWTSQueryUserToken(TOKEN_AL L_ACCESS);“ bekomme ich dann folgenen Fehlertext:
function GetUserName : string;
var Token : TJWSecurityToken; begin Token := TJwSecurityToken.CreateWTSQueryUserToken(TOKEN_ALL_ACCESS); try try Result := Token.TokenOwner.AccountName['']; AddToLog('Username requested: ' + Result); except on e : Exception do begin AddToLog('@GetUsername' + #13#10 + e.Message); Result := ''; end; on e : EJWSCLProcessNotFound do begin AddToLog('No user is loged on'); Result := ''; end; end; finally Token.Free; end; end; Zitat:
xZise |
Re: Angemeldeten Benutzer aus Dienst ermitteln
Zitat:
Fragen: 1. Wird die Funktion aufgerufen, wenn kein Benutzer angemeldet ist? 2. Welche Windows Version verwendest du? 3. Welche JWSCL Version verwendest du (0.9.2a?) und welche Updateversion (=Subversion revision) hast du (wenn du das nicht weißt, dann genügt mit das auch)? --
Delphi-Quellcode:
TokenOwner ist der Besitzer des Tokens - das ist meist "Administratoren". Was du suchst ist das Property TokenUser.
Result := Token.TokenOwner.AccountName[''];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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