-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
31. Mär 2009
Lol, zu spät gesehn:
Token := TJwSecurityToken.CreateWTSQueryUserToken(TOKEN_ALL_ACCESS);
TOKEN_ALL_ACCESS ist nicht was da als Parameter reingehört!
Nimm das:
Token := TJwSecurityToken.CreateWTSQueryUserToken();
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
30. Mär 2009
Ja, nimm die neuste Version und update diese mit Subversion.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
30. Mär 2009
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)?
--
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
15. Apr 2008
Ich habe dieses Artikel mal darüber geschrieben.
http://blog.delphi-jedi.net/2008/04/15/how-to-get-the-users-token-from-a-service-2/
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
15. Apr 2008
Verstehe ich nicht!
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
15. Apr 2008
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,...
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
11. Dez 2007
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:
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
11. Dez 2007
Installieren und Starten ist ein Unterschied.
CreateCompatibilityQueryUserToken macht genau das. Dieser Konstruktor darf in einem Dienst nur in Windows2000 aufgerufen werden.
Er schlägt natürlich fehl, wenn keiner eingeloggt ist, weil dann der Explorer.exe Prozess nicht existiert.
Du kannst erst dann das UserToken unter Win2000 bekommen, wenn ein Benutzer sich angemeldet hat und...
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
11. Dez 2007
Axo jetzt verstehe ich. Du verwendest CreateCompatibilityQueryUserToken .
Natürlich gibt es kein Explorer.exe, wenn kein Benutzer eingeloggt ist, oder dein Dienst sich nicht in der Session eines angemeldeten Benutzers liegt.
Du kannst es natürlich mit try/except abfangen. Viele Methoden werfen Exceptions.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
11. Dez 2007
Ich verstehe nicht, warum das ein Problem der JWSCL sein soll?!
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
10. Dez 2007
Die JWSCL verwendet die JEDI API für die API Aufrufe.
Um z.b. Token nutzen zu können verwendest du die Unit JwsclToken, die in "...\jedi-api-lib\jwscl\trunk\source" liegt.
Diesen Pfad kannst du auch in den globalen Suchpfad von Delphi eintragen. Im Gegensatz zur JWA verwendet die JWSCL keine
Pakete, da es sich hier nicht lohnt DCU Dateien zu verwenden. Sie wird einfach zu oft aktualisiert.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
7. Dez 2007
Wenn du kein Vista-Funktionalität verwenden willst, kannst du in Jwscl.inc die Direktive {$DEFINE VISTA} ausschalten (nach {.$DEFINE VISTA}). Nur möglich ab Revision #71.
Wenn du Vista-Funktionalität haben willst, und dein Programm nur auf Vista und neuer laufen soll, dann kannst du die Jedi Window API (Jwa) mit STATIC kompilieren -> Compiler Direktive: DYNAMIC_LINK ausschalten. Das geht...
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
6. Dez 2007
Also ich hab nicht rausgefunden, wie man bei SF sogenannte Daily-Builds erstellen kann - wenn das überhaupt möglich ist.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
5. Dez 2007
Diese Version ist aktuell nur über SVN erreichbar. Du kannst aber Uptodate werden, wenn du mit SVN ein update von dem Heruntergeladenen Quellen machst.
Am einfachsten geht es mit dem WindowsProgramm TortoiseSVN und dann einfach rechtsklick auf JWSCL und JWAPI und dann Aktualisieren.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
1. Dez 2007
Ich hab den Link in die SecLib implementiert:
JwsclToken.TJWSecurityToken:
{@Name is a compatibility constructor for CreateWTSQueryUserToken which does
not work in Windows 2000.
It creates a token of the current logged on user.
This constructor seeks a process of the user and gets its token.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
1. Dez 2007
Was mir noch einfällt, wäre die Prozesse der Konsolensitzung aufzuzählen und darüber ein Token versuchen zu erhalten. Z.b. der Explorer
Siehe in diesem Thread:
http://www.delphipraxis.net/internal_redirect.php?p=721630#721630
Oder eben das angesprochene "session change notification" verwenden.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
30. Nov 2007
Total richtig. Wenn du den Source aus einem Dienst aufrufst, der unter SYSTEM läuft, dann ist das immer so.
Du musst das Token des angemeldeten Benutzers verwenden. CreateTokenEffective versucht zuerst das Token des aktuellen Threads
zu holen, und wenn das (meist) fehlschlägt, dann des Prozesses.
Dazu gibt es den Konstruktor TJwSecurityToken.CreateWTSQueryUserToken
Mit...
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
29. Nov 2007
Warum soll ich pushen?
Wenn du etwas schreiben willst, dann kannste ja gleich einen neuen Post machen, statt zu pushen. Edits sollten eh nur für Kleinigkeiten sein.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
29. Nov 2007
Das ist ein Bug von TD.
Guck mal bei
http://www.delphipraxis.net/internal_redirect.php?p=813355#813355
P.S.
Wenn du so eine Meldung per Edit einfügst, wird niemand benachrichtigt und es ist nur Zufall, wenn man deinen Post liest.
-
Forum: Win32/Win64 API (native code)
Delphi
by Dezipaitor,
28. Nov 2007
Lustige Sache:
Es können mehrere Benutzer gleichzeit angemeldet sein :D
mit den Notification, wie es in dem C++ Artikel auf codeproject gezeigt wird, kann man nur dann reagieren, wenn der Dienst schon von anfang an gestartet ist - sonst bekommt man keine Nachricht.
Am einfachsten geht es, wenn man WTSQueryUserToken aus der JWSCL verwendet. Man kann bestimmen, welche Session (lokal, remote)...