Wie kann ein Windows-Dienst seinen Dienstnamen ermitteln?
Ich habe gesucht und konnte keine einfache Frage finden:
Wie kann ein Windows-Dienst den Dienstnamen ermitteln, für den er gestartet wurde?
Ich weiß, dass die Installation die Registrierung hacken und ein Befehlszeilenargument hinzufügen kann, aber logischerweise scheint es sosollte unnötig sein, daher diese Frage.
Ich hoffe, dass ich mehrere Kopien einer einzelnen Binärdatei sauberer ausführen kann als der Registry-Hack.
Bearbeiten:
Dies ist in C # geschrieben. Meine ApplikationenMain() Der Einstiegspunkt führt abhängig von den Befehlszeilenargumenten verschiedene Aktionen aus:
Installieren oder deinstallieren Sie den Dienst. Die Befehlszeile kann einen nicht standardmäßigen ServiceName bereitstellen und die Anzahl der Arbeitsthreads ändern.Als ausführbare Befehlszeilen-Datei ausführen (zum Debuggen),Führen Sie als "Windows-Dienst" aus. Hier schafft es eine Instanz von meinemServiceBaseKlasse abgeleitet, dann ruftSystem.ServiceProcess.ServiceBase.Run (Instanz);Derzeit werden beim Installationsschritt der Dienstname und die Thread-Anzahl an die angefügtBildpfad in der Registrierung, damit die App den ServiceName ermitteln kann.