Also wir haben in der Firma ein komplettes Überwachungs-Framework (für Windows-Terminalserver) mit DB-Reporting und Web-Frontend in Perl hochgezogen.
Der Backend-Teil sind dabei etliche Dienste (Perfmon-, Eventlog-, Servicestatus-Überwachung;Inventory), die wir mit Activestate-PDK realisiert haben.
Das hat den Vorteil, dass mann erstmal recht wenig über Diensteprogrammierung wissen muss (die mitgelieferten Beispiele reichen eigentlich aus). Wer mehr wissen will, kann sich mal bei Dave Roth (www.roth.net) umtun. Der hat auch etliche Bücher über Win-Administration mit Perl geschrieben (Dienste-Programmierung ist auch ein Thema dabei).
Timer braucht man nicht. Ein Dienst läuft sowieso in einer Endlosschleife und muss alle paar Sekunden mit dem Dienstemanager von Windows kommunizieren (Ob er noch lebt, Anweisungen z. B. zum Stoppen/Pausieren/Fortsetzen entgegennehmen).
Das klingt nach Systembelastung ist aber in der Praxis keine, da der Dienst die meiste Zeit sowieso schläft. (Dienste, die wenig tun, z.B. nur nen bißchen Registry oder Eventlog lesen, akkumulieren fast keine CPU-Zeit auf ihrem Konto, wenn sie dieses "wenige" nur alle paar Sekunden durchführen).
Zu deiner speziellen Aufgabenstellung mit den USB-Geräten, kann ich dir allerdings nichts sagen.
Das PDK kostet natürlich was, aber die Zeitersparnis, die man hat, gegenüber dem, dass man sich das alles erarbeiten muss wiegt das mehrfach auf und man erhältauf Anhieb brauchbare Dienste (kompilierte Perl-Skripten, also EXE-Files)
Ich Teile Gwendragons Skepsis aus meiner Erfahrung heraus nicht. Wir lassen sogar die Inventory-Jobs als Dienst laufen, auch wenn die so eingestellt sind, dass im Normalfall nur 1mal in 24h wirklich gearbeitet wird.
I sense a soul in search of answers.