Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#2

Re: Wie (von wo?) wurde ein Programm gestartet?

  Alt 8. Aug 2005, 12:39
Da habe ich doch mal was geschrieben. Guckst du hier:
Delphi-Quellcode:
if IsLocalSystem then
    begin
// SECOND INSTANCE
// Under SYSTEM try to run as a service. This will fail if the app was not
// installed as a service, yet
      ste[0].lpServiceName := pszServiceName;
      ste[0].lpServiceProc := @ServiceMainA;
      ste[1].lpServiceName := nil;
      ste[1].lpServiceProc := nil;
// hand over control to SCM
      StartServiceCtrlDispatcher(ste[0]);
    end
    else
    begin
    // ...
    end;
Download unter (was du brauchst ist der Source von CMDasSYS):
http://assarbad.net/stuff/localsystem.zip / http://assarbad.net/stuff/localsystem.rar

Der Spaß basiert auf der Annahme, daß der Service im Kontext von SYSTEM (LocalSystem) gestartet wird, das Programm selber aber nicht (wenn es also nicht als Service gestartet wurde). Auf dieser Entscheidung basierend wird dann die Kontrolle an den SCM übergeben oder eben die normale Hauptfunktion aufgerufen - zumindest wäre dies bei dir dann wohl so.

Alternativ könntest du dem Service einen Parameter auf den Weg geben, damit das Programm weiß, daß es als Service laufen soll.
  Mit Zitat antworten Zitat