AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Tray Icon, Service und Vista

Ein Thema von mwitzsche · begonnen am 23. Nov 2006 · letzter Beitrag vom 26. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2   
mwitzsche

Registriert seit: 27. Sep 2006
2 Beiträge
 
#1

Tray Icon, Service und Vista

  Alt 23. Nov 2006, 10:03
Ich teste gerade Dienste (D7 + SVCom) unter Vista Final. Allerdings gibt es da jetzt ein Problem, es werden keine Tray Icons mehr angezeigt. Ich habe mit CoolTrayIcon und anderen Komponenten getestet. Auch eigener API Code greift nicht. Unter XP/NT/2003 passt alles. Muss also an Vista liegen. Hat sonst noch jemand das gleiche Problem oder schon eine Lösung?

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Tray Icon, Service und Vista

  Alt 23. Nov 2006, 10:06
Zitat von mwitzsche:
Muss also an Vista liegen. Hat sonst noch jemand das gleiche Problem oder schon eine Lösung?
Microsoft hat endlich die Lücke geschlossen und lässt eine Interaktion von NT-Diensten mit dem Desktop nicht mehr zu, da dieses eine der größten Sicherheitslücken dieser überhaupt ist. Da musst Du einen anderen Ansatz wählen: i.A.: Einen Dienst der mit einer zweiten Desktopanwendung via Hier im Forum suchenPipes kommuniziert.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
mwitzsche

Registriert seit: 27. Sep 2006
2 Beiträge
 
#3

Re: Tray Icon, Service und Vista

  Alt 23. Nov 2006, 10:14
Danke erst mal für die fixe Antwort. Ich hatte schon so eine Vermutung, es gab wohl auch mal einen Artikel dazu. Leider habe ich den verlegt. Da es aber in Vista die Einstellung für den Dienst (LocalAccount + Interaktiv) noch gibt, dachte ich, es müsste auch funktionieren Schöner Mist.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Tray Icon, Service und Vista

  Alt 23. Nov 2006, 11:03
uj, da muss ich mir ja Vista doch noch mal installieren. Das würde ja bedeuten das SetThreadDesktop etc. nicht mehr funktioniert?! Oder kann man darüber vielleicht doch noch auf den Desktop zugreifen (also wenn man einen Thread der Anwendung auf den Userdesktop befördert)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
spidergen

Registriert seit: 3. Mär 2007
3 Beiträge
 
#5

Re: Tray Icon, Service und Vista

  Alt 6. Mär 2007, 09:03
Ich versuche derzeit auch, einen Dienst unter Vista ans laufen zu bekommen. Mir ist bewusst, dass diese nicht mehr interaktiv sein dürfen. Jedoch bekomme ich schon beim Versuch, den Dienst zu installieren eine Fehlermeldung "Dienstname.exe funktioniert nicht mehr".

Was muss ich weiterhin bei der Erstellung von Diensten für Vista beachten?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Tray Icon, Service und Vista

  Alt 6. Mär 2007, 10:27
Guck mal hier: http://www.microsoft.com/whdc/system..._Services.mspx und hier: http://www.microsoft.com/whdc/system.../services.mspx
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
spidergen

Registriert seit: 3. Mär 2007
3 Beiträge
 
#7

Re: Tray Icon, Service und Vista

  Alt 6. Mär 2007, 11:00
Super, danke!

Leider bekomme ich es immernoch nicht ans laufen. Selbst ein noninteraktiver Dienst, der ohne jeglichen Inhalt (s.u.) kompiliert wurde, ist unter Vista bisher bei mir nicht lauffähig. Ich denke daher, dass es nicht an der Programmierung der Funktionalitäten scheitert, sondern an der "Deklaration" des Dienstes selbst.

Delphi-Quellcode:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TService2 = class(TService)
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  Service2: TService2;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  Service2.Controller(CtrlCode);
end;

function TService2.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

end.
Der Dienst soll Informationen mit einer anderen Anwendung austauschen. Da interaktive Dienste bei Vista ja nicht mehr gestattet sind, dachte ich also am Memory Mapped Files (MMF). Unter WinXP funktioniert das auch alles.

Sehe ich das richtig, dass MMF nicht der richtige Weg zur Interprozesskommunikation in Vista ist?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Tray Icon, Service und Vista

  Alt 6. Mär 2007, 11:13
Microsoft schlägt vor nur noch über RPC oder Pipes zwischen Programmen zu kommunizieren.

Wenn man zB komplexere Dialoge aus einem Dienst heraus anzeigen möchte, sollte man zusätzlich zum Dienst eine zweite Applikation erstellen. Diese Applikation läuft unter dem User-Desktop und erhält durch zB eine Pipe die Nachrichten, welcher Dialog jetzt angzeigt werden soll.

Der Service läuft unter Vista immer in dem sogennannten Desktop0, alle User-Desktops aufsteigend im Desktop1, 2 usw.

Zu beachten ist dabei auch die Registry.
Dort sollte man sehr drauf achten, daß beide Programme auf die Werte auch zugreifen können. Der Service wird es in der Regel können, aber wenn der Service zB einen Registrywert erstellt hat, kann es die Applikation nicht unbedingt lesen.
Es sollte darauf geachtet werden, daß solche Werte in einem Registryzweig stehen auf die beide Zugriff haben, zumindest lesend.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
spidergen

Registriert seit: 3. Mär 2007
3 Beiträge
 
#9

Re: Tray Icon, Service und Vista

  Alt 6. Mär 2007, 12:12
Ok, die Interprozesskommunikation werde ich dann wohl mal auf Pipes umstricken.

Wisst ihr nun zufällig auch noch, warum sich der Dienst nicht starten lässt?
  Mit Zitat antworten Zitat
Dezipaitor

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

Re: Tray Icon, Service und Vista

  Alt 14. Mär 2007, 19:22
ich kann mich noch dunkel erinnern, wie es UltraVNC macht.

1. Service installieren (TCB) und Thread erstellen
2. Eingabedesktop suchen (OpenInputDesktop) und für Thread setzen (SetThreadDesktop)
3. GetPixel(GetDC(Null)) verwenden um Pixel zu lesen.

Problem : Funktioniert nicht mehr unter Vista, weil SystemDienste nun in einer eigenen Session 0 (nicht interaktiv) laufen.
Was kann man machen?

A. Mirror Treiber
B. Über Einschleussen von Prozessen in die interaktive Sitzung (für jeden Desktop, auch wenn er später erstellt wird)
Kommunikation über Pipes, Shared Memory, Sockets oder RPC.

Keine Gewähr zur Funktion!

P.S.
Ich frage mich gerade, ob mit Session, LogonSession gemeint ist oder WinStation oder was anderes?
Kennt jemand eine grafische Darstellung, wie Sessions (evt. LogonSessions), WinStation und Desktops in Beziehung stehen?

Zu B.
Wenn Session = LogonSession könnte man ja auch einen Thread in die Session 1 oder höher impersonieren, und damit auf den Desktop zugreifen können.
siehe diesen MSDN Artikel zu FUS
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 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17: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