2010-11-23 18 views
1

Ich möchte eine Anwendung in C++, die regelmäßig ausgeführt wird. ähnlich wie ein Windows-Dienst. Ist es möglich, einen Windows-Dienst in C++ zu erstellen? Wenn ja wie?Windows-Dienst in C++

Irgendein Tutorial dafür?

EDIT: Wie kann ich ein Installationsprogramm für den Windows-Dienst erstellen?

Antwort

2

Wie in einer anderen Antwort angegeben, benötigen Sie ein normales C++ Programm (beginnend mit main) zu erstellen, und rufen Sie StartServiceCtrlDispatcher Win32-API von Windows zu sagen, dass Sie möchten dieses Programm als Dienst ausführen. Einige Informationen auf this function can be found in MSDN.

Darüber hinaus benötigen Sie einen Mechanismus zu installieren Sie Ihren Dienst so, dass es in der Windows-Systemsteuerung angezeigt wird. Und natürlich sollte auch eine uninstall Funktion zur Verfügung gestellt werden. In der Regel werden alle drei Funktionen (d. H. Installieren, Deinstallieren und Ausführen) in einer einzigen ausführbaren Datei verarbeitet. Der Unterschied in diesen drei wird über Befehlszeilenparameter angezeigt.

Sie haben nicht angegeben, welche Version von VC++ Sie verwenden. Wenn Sie mit verwaltetem .NET-Code arbeiten, ist dies sehr einfach, da die Windows-Service-Vorlage in Visual Studio vorkompiliert ist.

Wenn Sie jedoch mit VC++ 6 (oder 100% nicht verwaltetem Code) arbeiten, müssen Sie viele Details auf niedriger Ebene kennen. Weitere Möglichkeiten hängen von Ihrem Know-how von ATL oder MFC ab (wenn Sie mit älteren Versionen des Compilers/Runtime arbeiten).

Dies könnte ein gutes Tutorial auf creating Windows Services using C++ sein.

+0

Dies sind einige gute Artikel zu diesem Thema. 1.http: //msdn.microsoft.com/en-us/library/ms685967%28VS.85%29.aspx 2.devx.com/cplus/Article/9857/1954 – sid

+0

Wie kann ich Installer für den Windows-Dienst erstellen ? – sid

+0

@syd, das hängt davon ab, welches Installationsprogramm Sie verwenden möchten. Wenn Sie mit dem Nötigsten gehen, dann ist die Installation der Befehlszeile eines einzelnen Dienstes sehr einfach. – Jaywalker

2

C++ ist genug kompatibel mit C, dass die traditionellen Ansätze funktionieren. Sie erstellen die Anwendung als normales C++ - Programm (beginnend mit main); Beim Start rufen Sie StartServiceCtrlDispatcher an, um das Betriebssystem zu informieren, dass Ihr Programm als Dienst ausgeführt werden kann. Windows ist es egal, dass Sie Klassen intern verwenden.

0

Natürlich ist es möglich. Nicht nur möglich, aber dafür ist die native API gedacht (naja, C wirklich, aber nahe genug).

Siehe Jeff Richters Buch „Programming Server-Seite Anwendungen für Windows 2000“