Problem mit dem starten eines Dienstes

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Problem mit dem starten eines Dienstes

Beitrag von Sunny »

Also mein Problem ist folgendes...
ich wollte mal versuchen einen Dienst zu starten.
Und zwar hab ich folgendes getan...
Ich hab erstmal ein ganz simples Programm erstellt.

Code: Alles auswählen

MessageRequester("Test","Test, ob der Dienst funktioniert.")
Danach habe ich einen Dienst erstellt.

Code: Alles auswählen

EnableExplicit

Procedure Service_Install(Name$, Title$, Program$, Description$="")
  Protected hSCManager, hServ, lResult, lpDescription.String
  hSCManager = OpenSCManager_(#Null, #Null, #SC_MANAGER_ALL_ACCESS)
  If hSCManager
    hServ = CreateService_(hSCManager, Name$, Title$, #SERVICE_ALL_ACCESS, #SERVICE_WIN32_OWN_PROCESS, #SERVICE_AUTO_START, #SERVICE_ERROR_NORMAL, Program$, #Null, #Null, #Null, #Null, #Null)
    If hServ
      If Description$
        lpDescription\s = ReplaceString(Description$, Chr(10), " ")
        lResult = ChangeServiceConfig2_(hServ, #SERVICE_CONFIG_DESCRIPTION, @lpDescription)
      EndIf
      CloseServiceHandle_(hServ)
    EndIf
    CloseServiceHandle_(hSCManager)
  EndIf
  If hServ And lResult
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure


If Service_Install("Dienst87","Titel von Dienst87","C:\Dokumente und Einstellungen\My\Eigene Dateien\Dienst87.exe","Beschreibung von Dienst87")=#True
  Debug "Service wurde erfolgreich installiert"
Else
  Debug "Service konnte nicht installiert werden"
EndIf
Die Ausgabe im Debugger war:"Service wurde erfolgreich installiert"

So... nun das Problem...
Hiermit wollte ich dann den Dienst starten:

Code: Alles auswählen

EnableExplicit

Procedure Service_Start(Name$)
  Protected hSCManager, hServ, lResult
  hSCManager = OpenSCManager_(#Null, #Null, #GENERIC_READ    | #SC_MANAGER_CONNECT)
  If hSCManager
    hServ = OpenService_(hSCManager, Name$, #GENERIC_EXECUTE)
    If hServ
      lResult = StartService_(hServ, 0, #Null)
      CloseServiceHandle_(hServ)
    EndIf
    CloseServiceHandle_(hSCManager)
  EndIf
  If hServ And lResult
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure

If Service_Start("Dienst87")
  Debug "Service wurde gestartet"
Else
  Debug "Service konnte nicht gestartet werden"
EndIf
Dann gab der Debugger nach einiger Zeit "Service konnte nicht gestartet werden" aus...
Kann mir jemand erklären, warum der Service nicht gestartet werden konnte?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Problem mit dem starten eines Dienstes

Beitrag von bobobo »

wenn du den installierten dienst mal mit der verwaltungskonsole versuchst zu starten
kommst du vielleich auf den fehler.
oder auch

net start "Titel von Dienst87"

in einer cmd-shell
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Problem mit dem starten eines Dienstes

Beitrag von bobobo »

Im Übrigen ist eine messagebox als dienst eher total unbrauchbar, weil der dienst
vermutlich nicht im Kontext des gerade angemeldeten users läuft . und du siehst als
OTTONORMALUSER nichts was im LokalenSystemKonto auf dem dortigen Desktop
abgebildet wird.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem mit dem starten eines Dienstes

Beitrag von Kiffi »

@Sunny:

http://www.purebasic.fr/german/viewtopi ... 82#p277882

Du solltest auch den Test-MessageRequester mal weglassen, denn nach
Möglichkeit sollte ein Windows-Dienst überhaupt keinen Screen-Output
erzeugen. Wenn Du Debug-Ausgaben benötigst, schreib in eine Log-Datei.

Grüße ... Kiffi
a²+b²=mc²
Antworten