Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Service und Vista - Interactive läuft nicht (https://www.delphipraxis.net/124983-service-und-vista-interactive-laeuft-nicht.html)

dmagin 28. Nov 2008 10:21


Service und Vista - Interactive läuft nicht
 
Moin liebe DelphiPraxis Gemeinde,

nun mal eine Frage von mir. Vielleicht habe ich gerade ein Hänger im Kopf jedoch irgendwie finde ich es nicht raus.
Also man erstellt einen ganz nornmalen Service unter Delphi (wie ich es immer schon machte).

Hier mal ein Beispiel mit Showmessage geht einfach nicht mehr (beep auch nicht).
Interactive ist auf TRUE gesetzt.

Der Service lässt sich einwandfrei kompilieren installieren ausführen usw..
Wenn ich im Timer eine Datei mitschreibe klappt es, also der timer läuft.

Das ganze unter Vista. Services lassen sich ja unter vista nur als Admin installieren. Habe ich ja auch gemacht.

Einer ne Idee??

Gruss Daniel Magin

Delphi-Quellcode:
unit u_ServiceModule;

interface

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

type
  TService7 = class(TService)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure ServiceExecute(Sender: TService);
  private
    { Private-Deklarationen }
  public
    function GetServiceController: TServiceController; override;
    { Public-Deklarationen }
  end;

var
  Service7: TService7;

implementation

{$R *.DFM}

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

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

procedure TService7.ServiceExecute(Sender: TService);
begin
  Timer1.Enabled:=true;
  while not Terminated do
   ServiceThread.ProcessRequests(True);

  Timer1.Enabled := False

end;

procedure TService7.Timer1Timer(Sender: TObject);
begin
// beep;
 showmessage('Hallo ich bins');

//  sTemp:=TStringList.Create;
//  if FileExists('c:\tmp\aa_service.txt') then
//   sTemp.LoadFromFile('c:\tmp\aa_service.txt');
//
//
//  sTemp.add(TimeToStr(now));
//  stemp.SaveToFile('c:\tmp\aa_service.txt');
//  stemp.free;

end;

end.

Bernhard Geyer 28. Nov 2008 10:26

Re: Service und Vista - Interactive läuft nicht
 
Zitat:

Zitat von dmagin
Das ganze unter Vista. Services lassen sich ja unter vista nur als Admin installieren. Habe ich ja auch gemacht.

Ist schon seit NT so. Schon mal nur als User der Gruppe "Benutzer" und nicht "Hauptbenutzer" sowas probiert?

Zitat:

Zitat von dmagin
Hier mal ein Beispiel mit Showmessage geht einfach nicht mehr (beep auch nicht).
Interactive ist auf TRUE gesetzt.

As Designed. Da solche interaktion eine große potentielle Sicherheitslücke darstellt wird es nicht mehr unterstützt (bzw. du müsstest explizit Registry-Keys anpassen). Bau lieber dein Programm um: Ein Teil Server, ein Teil GUI und beide kommunizieren z.B. mit TCP-IP miteinander.

dmagin 28. Nov 2008 10:28

Re: Service und Vista - Interactive läuft nicht
 
hi bernhard,

bist du sicher,

ich dachte ich hab damals auf den roadshows mit xp und delphi 6 oder 7 (?) ein timer mit beep gebaut. werde es mal unter xp nochmal probieren.

aber erstmal danke

dmagin 28. Nov 2008 10:34

Re: Service und Vista - Interactive läuft nicht
 
Hi Bernhard,

also unter XP läuft das einwandfrei (beep und showmessage).

also ist es in vista verboten.

Hat jemand eine Idee es dort beep und showmessage'n zu lassen

gruss daniel magin



EDIT:
Also der Dienst Beep auch wenn keiner eingeloggt ist (in XP).

Bernhard Geyer 28. Nov 2008 10:48

Re: Service und Vista - Interactive läuft nicht
 
Zitat:

Zitat von dmagin
ich dachte ich hab damals auf den roadshows mit xp und delphi 6 oder 7 (?) ein timer mit beep gebaut. werde es mal unter xp nochmal probieren.

Zu XP-zeiten war das noch Problemlos möglich.


Zitat:

Zitat von dmagin
Hat jemand eine Idee es dort beep und showmessage'n zu lassen

Aus dem Dienst gar nicht. Mein Lösung habe ich schon geschrieben

Zitat:

Zitat von dmagin
Also der Dienst Beep auch wenn keiner eingeloggt ist (in XP).

Hier wäre eine GINA-Erweiterung sinnvoll.

dmagin 28. Nov 2008 10:58

Re: Service und Vista - Interactive läuft nicht
 
wird halt nicht mehr gebeept sondern wie du schon auch gemeint hast zu einer tray app per tcp ne message gesendet.

egal

trotzdem danke und noch viel spass

;-)

Luckie 28. Nov 2008 11:08

Re: Service und Vista - Interactive läuft nicht
 
Ui, deine Frage überrascht mich jetzt aber etwas. :shock: Dass es bei Hobbyprogrammierern noch nicht ganz durchgedrungen ist, dass interaktive Dienste eine Sicherheitslücke darstellen und deswegen seit Windows Vista auch nicht mehr unterstützt werden, kann ich ja noch verstehen. Aber bei dir?

richard_boderich 28. Nov 2008 11:10

Re: Service und Vista - Interactive läuft nicht
 
Soviel ich weis, lässt Vista keine direkten Userinteraktionen mit Systemdiensten zu bzw. schränkt diese ein.

guck mal hier

http://www.winfaq.de/faq_html/Conten...?h=tip2336.htm

Dezipaitor 28. Nov 2008 15:27

Re: Service und Vista - Interactive läuft nicht
 
Das ganze Unterfangen funktioniert eigentlich seit Win2000 nicht mehr. Das Problem sind Sessions für den Multiuserbetrieb. Jeder eingeloggte Benutzer (Konsole oder Terminal-RDP) bekommt eine eigene Session. Unter XP teilen sich Dienste und der erste eingeloggte Benutzer die Session Nummer 0. Ein neuer Benutzer bekommt die 1 usw. In Vista hat wurde für Dienste und der erste Benutzer zwei Sessions eingeführt und daher sind interaktive Dienste nicht mehr möglich.

Eine Session ist eine Umgebung, die WindowStations, Desktops und einiges mehr besitzt. Jede hat eine winsta0\winlogon + default Desktop. SendMessage (Und damit das ganze Windowmanagersystem) funktioniert nicht über Sessiongrenzen hinweg und sogar ein Großteil der Handles sind ungültig.
Benutze WTSSendMessage für eine session-gezielte Nachrichtenbox (nur lokal).

UpdateHabe ich doch glatt meinen Artikel vergessen:
http://blog.delphi-jedi.net/2008/06/...ite-a-service/

Luckie 28. Nov 2008 19:41

Re: Service und Vista - Interactive läuft nicht
 
Handles sind sogar desktopspezifisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Seite 1 von 2  1 2      

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