AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Wie startet Firefox seinen Update Service?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie startet Firefox seinen Update Service?

Ein Thema von QuickAndDirty · begonnen am 18. Sep 2018 · letzter Beitrag vom 19. Sep 2018
Antwort Antwort
Seite 1 von 2  1 2      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#1

Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 13:48
Hallo, ich habe mir einen Update Service geschrieben.
Wie bei FF soll der nicht die ganze Zeit laufen sondern einfach nur wenn er gebraucht wird.
Nun bekomme ich den Service ohne Admin privilegien nicht gestartet.
openService
meldet "Access Denied"

Wie macht FF das mit seinem Update Service?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 14:50
Könnte man ihn eventuell in die Aufgabenplanung eintragen, damit er alle 7 Tagen sich startet und nach Updates guckt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 14:54
Weiß nicht, wie er das genau macht. Worauf Du aber vielleicht hinaus willst:
Bei der FF Installation wird gefragt, ob automatisch nach Updates gesucht werden soll (oder sogar explizit nach diesem Service gefragt)
Sagt man nein, passiert natürlich nichts.
Sagt man ja, gibt es eine UAC Abfrage und das Setup erlangt Admin Rechte, mit deren Hilfe es sicher den Service einrichtet, also auch dem Service selbst das Recht (weiter)gibt.

(So ungefähr aus dem Kopf, das Spiel ist prinzipbedingt immer sehr ähnlich)
Gruß, Jo
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 15:05
Ja ich weiß. Mein Service läuft ja auch als "System" Service und er wurde mit "RUNAS" installiert.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#5

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 15:07
Hat irgendwer schon mal den FireFox bei einem Update genau beobachtet?
Was ist Euch da aufgefallen?

Eben, nix!

Der fragt für die Installation noch nicht mal nach dem Administrator-Zugang trotz UAC.

Und warum?

Weil die Installation von dem MozillaMaintenance Service durchgeführt wird. Dieser Dienst läuft im Kontext von Lokales System und darf somit auch installieren.

Dieser Dienst ist aber im Normal-Zustand beendet und wird nur dann erweckt, wenn es ein Update gibt.

Genau darum geht es hier in diesem Thread. Wie weckt Otto-Normal-User den Service auf, damit dieser mit seinen höheren Rechten die Installation vollzieht.

Ich habe es gerade mal ausprobiert und das geht mit
Code:
net start MoziallaMaintenance
(auch als Otto-Normal-User).

Geändert von Schokohase (18. Sep 2018 um 15:12 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 15:07
Könnte man ihn eventuell in die Aufgabenplanung eintragen, damit er alle 7 Tagen sich startet und nach Updates guckt?
Denke das ginge, aber ich dachte immer, dass FF den Service bei Bedarf startet.
Ich weiß nur nicht WIE?
Der Mozilla Update Service läuft, wie mein Service, im "System" Benutzerkontext.
Der FF läuft als Benutzer.
Wie startet FF den Dienst?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#7

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 15:21
Ich habe es gerade mal ausprobiert und das geht mit
Code:
net start MoziallaMaintenance
(auch als Otto-Normal-User).
Hm...Ich weiß es ist etwas bitchy aber warum geht das nicht mit mit dem Servicemanager von windows...?
Liegts daran das OpenService einen Zugang zu allerlei Anderem liefert, neben der Möglichkeit den Service zu starten?

ich gucke gerade vielleicht nehme ich mir mit den flags hier einfach zuviel heraus und man muss sich selbst in den anforderungen beschneiden damit es klapt?

Delphi-Quellcode:
  hServiceManager := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
  if hServiceManager > 0 then
  begin
    GetLastError;
    hService := OpenService(hServiceManager,
                            PChar(ServiceName),
                            SERVICE_START);
    err := GetLastError;
    if ERR >0 then
    Begin
      {$IFDEF FrameWork_VCL}
      Showmessage(SysErrorMessage(GetLastError));
      {$ENDIF}
      {$IFDEF FrameWork_FMX}
      TDialogService.Showmessage(SysErrorMessage(GetLastError));
      {$ENDIF}
    End;
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (18. Sep 2018 um 15:29 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 15:47
Probier es mal mit https://stackoverflow.com/a/30514865/1744164 (da musst du minimal noch Hand anlegen damit es läuft)
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 16:12
Kann es sein, dass er den service beim windows start hoch fährt, dieser nach einem update schaut und wnen nichts da ist, der service sich einfach beendet ?
(Hab kein FF, von daher nur theorie)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#10

AW: Wie startet Firefox seinen Update Service?

  Alt 18. Sep 2018, 16:19
hab das versuch, geht leider nicht.
Aber wieso sollte es funktionieren wenn ich start und Query rechte anfordere...
das ist zurzeit die funktion.
Delphi-Quellcode:
function TServiceController.StartService(ServiceName : string) : TServiceStatusReturn;
var
  hService : SC_HANDLE;
  hServiceManager : SC_HANDLE;
  pDummy : PChar;
  Tries : Integer;
  err:Cardinal;
begin
  Result := ServiceGetStatus(nil,PChar(ServiceName));
  if Result <> ssrStopped then
    Exit;
// SetServiceObjectSecurity() // vermutlich
  hServiceManager := OpenSCManager(nil, nil, SC_MANAGER_CONNECT );
  if hServiceManager > 0 then
  begin
    GetLastError;
    hService := OpenService(hServiceManager,
                            PChar(ServiceName),
                            SERVICE_START);
    Err := getlasterror;
    if ERR >0 then
    Begin
      {$IFDEF FrameWork_VCL}
      Showmessage(SysErrorMessage(GetLastError));
      {$ENDIF}
      {$IFDEF FrameWork_FMX}
      TDialogService.Showmessage(SysErrorMessage(GetLastError));
      {$ENDIF}
    End;

    if hService > 0 then
    begin
      pDummy := nil;
      if winsvc.StartService(hService, 0, pDummy) then
      begin
        Tries := 5;
        repeat
          Sleep(10000);
          Result := ServiceGetStatus(nil,pchar(ServiceName));
          Dec(Tries);
        until (Tries = 0) or (Result = ssrRunning);
      end
      else
      begin
        Result := ssrError;
      end;
      CloseServiceHandle(hService);
    end
  end;
  CloseServiceHandle(hServiceManager);
end;
Vermutlich ist der fehler, dass ich den Service mit Shellexecute installiere...
Wenn ich den Service auch über den ServiceManager installieren würde könnte ich die via UAC Angeforderten rechte nutzen um diese funktion SetServiceObjectSecurity()auszuführen.
hmm
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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