AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Angemeldeten Benutzer aus Dienst ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Angemeldeten Benutzer aus Dienst ermitteln

Ein Thema von xZise · begonnen am 28. Nov 2007 · letzter Beitrag vom 31. Mär 2009
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#31

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 11. Dez 2007, 23:08
Nein, du bist mit deinen Gedanken weit von der Erde entfernt, wo das Problem liegt
Es wurde einfach in der Groß-Kleinschreibung unterschieden. Das ist aber bei Prozessnamen egal.
Wenn du Update machst, sollte es funktionieren.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#32

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 12. Dez 2007, 15:03
Zitat von Dezipaitor:
Nein, du bist mit deinen Gedanken weit von der Erde entfernt, wo das Problem liegt
Ich wusste es schon immer xD Ich bin ein Ausserirdischer xD

Zitat von Dezipaitor:
Es wurde einfach in der Groß-Kleinschreibung unterschieden. Das ist aber bei Prozessnamen egal.
Wenn du Update machst, sollte es funktionieren.
Hehe ^^ Nagut
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
Wird Freitag wahrscheinlich erst was xD

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#33

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 07:58
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:
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.
Obwohl ich eindeutig jetzt mit den Rechner schreibe, und wie man sieht Es funktioniert, mit Explorer.exe!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#34

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 12:28
Ich vermute mal, dass CreateToolHelp32SnapShot nicht alle Prozesse von allen Sessions auflistet.

Du kannst CreateWTSQueryUserTokenEx verwenden, welche die Angabe einer Session erlaubt.

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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#35

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 16:40
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#36

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 16:43
Zitat von xZise:
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
Verstehe ich nicht!
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#37

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 20:26
Also:
Es gibt verschiedene Stadien:
  1. Offline (Computer ist ausgeschaltet)
  2. Keiner angemeldet (Computer ist eingeschaltet)
  3. Online (Jemand ist angemeldet und benutzt den PC)
Im ersten Fall passiert nichts .
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#38

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 15. Apr 2008, 21:01
Ich habe dieses Artikel mal darüber geschrieben.

http://blog.delphi-jedi.net/2008/04/...m-a-service-2/
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#39

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 30. Mär 2009, 17:04
Hallo,
also ich verwende inzwischen folgenden Code:
Delphi-Quellcode:
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;
Und bei dem Aufruf von „TJwSecurityToken.CreateWTSQueryUserToken(TOKEN_AL L_ACCESS);“ bekomme ich dann folgenen Fehlertext:
Zitat:
An Exception of type EJwsclWinCallFailedException was raised.

(Data was given by programmer and can vary from actual source.)

Source method....: WTSQueryUserToken

Source class.....: TJwSecurityToken

Source file......: JwsclToken.pas

Source line......: 0

GetLastError.....: 7022 ($1B6E)

GetLastErrorMsg..: Die angegebene Sitzung wurde nicht gefunden.



Message : A call to WTSQueryUserToken failed. Session ID: 983551
MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#40

Re: Angemeldeten Benutzer aus Dienst ermitteln

  Alt 30. Mär 2009, 20:14
Zitat:
Message : A call to WTSQueryUserToken failed. Session ID: 983551
Wow, da muss aber was schief gegangen sein. So eine SessionID gibt es sicher nicht.

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)?


--

Result := Token.TokenOwner.AccountName['']; TokenOwner ist der Besitzer des Tokens - das ist meist "Administratoren". Was du suchst ist das Property TokenUser.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 08:50 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