AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Service-EXE ist in Windows Audio geöffnet?

Service-EXE ist in Windows Audio geöffnet?

Ein Thema von Codehunter · begonnen am 11. Dez 2015 · letzter Beitrag vom 11. Dez 2015
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 10:50
Moinsen...

Ich schreibe an einem Systemdienst. Wenn ich den Dienst in der Dienstverwaltung beende und anschließend neu kompiliere, dann sagt der Compiler, dass die EXE nicht erstellt werden kann. Wenn ich versuche, die EXE manuell im Explorer zu löschen, erhalte ich die Fehlermeldung, dass das nicht geht weil die EXE in "Windows Audio" geöffnet ist.

Wenn ich nun den Dienst "Windows-Audio" beende und versuche, die EXE zu löschen, geht das auch nicht weil sie nun angeblich in "DHCP-Client" geöffnet wäre. Und so weiter...

Ich vermute, dass das irgendwas mit Dependencies zu tun hat. Hat jemand eine Idee?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 11:03
Ein Systemdienst blockt und die Erkennung geht wohl auf die PIDs, welche in diesem Fall, vermutlich Dank fehlender Rechte, nicht ausgelesen werden können.

Alle diese Prozesse haben also die PID 0 und als Name wird nun der des zuerst gefundenen Prozesses ausgelesen.


ProcessExplorer?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Dez 2015 um 11:05 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 11:18
Bei Windows XP kann man sich in der Systemsteuerung bei den Diensten die Abhängigleiten zwischen den Diensten anschauen. Wie's bei anderen Windosen ist, weiß ich nicht und mag auch nicht danach suchen.

Aber:

In der Registry könntest Du eventuell unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services fündig werden.
Dort müssten alle Dienste aufgeführt sein und bei Abhängigkeiten müsstest Du dort jeweils bei DependOnService und/oder DependOnGroup herausbekommen können, wer da von wem abhängt.

Eventuell forschst Du mal von hier http://www.winfaq.de/faq_html/Conten...?h=tip0572.htm ausgehend weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 11:18
ProcessExplorer?
Unter SvHost - War ja zu erwarten.

Neue Vermutung: Ich versuche, den Service aus sich selbst heraus zu beenden, wenn intern eine Exception aufgetreten ist und die entsprechenden Fehler im EvtLog geschrieben sind. Könnte es sein, dass ein MyService.Free den Dienst nicht richtig beendet?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 11:37
Ein Service wird eigentlich mit MyServiceThread.Terminate beendet.
Damit müsste er eigentlich dem Betriebssystem mitteilen, dass er sich nun verabschiedet.
(das ist Müll, da hab' ich (mal wieder) zu schnell diagonal gelesen

Wenn dass nicht passiert, ist zwar des Programm selbst beendet, das Betriebssystem weiß davon aber nichts.
(Bin mir aber nicht sicher, ob das ausreicht.)


Eventuell ist das hier beschriebene aber hilfreicher: http://codeverge.com/embarcadero.del...rminat/1045961

Schau Dir bitte bei Gelegenheit mal diese Seite an: http://www.tolderlund.eu/delphi/service/service.htm, eventuell findest Du dort hilfreiche Informationen.

Geändert von nahpets (11. Dez 2015 um 12:31 Uhr) Grund: Dummfug durchgestrichen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#6

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 11:59
Application.Terminate; (das Application aus der Service-Unit und nicht das aus Forms)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Dez 2015 um 12:00 Uhr) Grund: ups, vergessen abzusenden
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Service-EXE ist in Windows Audio geöffnet?

  Alt 11. Dez 2015, 13:20
Application.Terminate; (das Application aus der Service-Unit und nicht das aus Forms)
Vcl.SvcMgr.TServiceApplication.Terminate gibts bei mir nicht (XE4)

EDIT: Ich habe mal folgendes eingefügt:
Delphi-Quellcode:
procedure TMyService.Kill;
const
  SERVICE_CONTROL_STOP = $00000001;
begin
  ServiceController(SERVICE_CONTROL_STOP);
end;
Wenn jetzt während der Initialisierung eine Exception auftritt sagt mir der Dienstmanager, dass der Dienst gestartet und dann angehalten wurde. Der Effekt, dass unter SvHost weiterhin ein "Restprozess" verbleibt, hat sich dadurch leider aber nicht verändert.

Noch ein EDIT: Ich habs rausgefunden! Problem liegt ganz woanders. Ich habe für die Ereignisanzeige eine MessageTable direkt in die Exe von meinem Dienst einkompiliert und verweise in der Registry als MessageFile darauf. Wenn ich nun die Ereignisanzeige öffne, baut diese ein Handle zum Image (EXE-Datei) auf und lässt es so lange offen bis ich die Ereignisanzeige wieder schließe. Problem erkannt, Gefahr gebannt: Ich kompiliere mir jetzt als MessageFile eine separate DLL und gut ist.

Am Rande bemerkt finde ich die Methodik, Einträge ins Eventlog zu schreiben, ziemlich abartig kompliziert. Wer auch immer sich das so für NT 3.5 damals ausgedacht hat, er muss ein selbstverliebter Theoretiker gewesen sein
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (11. Dez 2015 um 14:38 Uhr)
  Mit Zitat antworten Zitat
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 23:51 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