Ich habe einen Windows-Dienst (C#) auf einem Server installiert, der alle 10 Minuten eine ausführbare Datei (C#) startet, um einige Bilder von einem Verzeichnis zu einem anderen zu verarbeiten. Keine Interaktion ist mit jedem Benutzer erforderlich. Da die ausführbare Datei ein Ausgabefenster ist, muss ich das Kontrollkästchen "Dienst mit dem Desktop interagieren" , das als insecure and bad practice angesehen wird, aktivieren, damit der Dienst ausgeführt wird. Wie würde ich mit diesem Problem umgehen? Ich mag die ausführbare Datei von meinem Windows-Dienst getrennt habe, weilAlternative zu "Dienst mit Desktop interagieren"?
- es einfacher zu debuggen macht und keinen vollständigen Windows-Dienst redeploy erfordern.
- manchmal verwende ich die gleichen Windows Service, um mehrere ausführbare Dateien in verschiedenen Intervallen (aber alle auf das gleiche Projekt bezogen) zu starten.
EDIT:
Wenn die Interaktion mit dem Desktop nicht aktiviert ist, wird die Konsole-Anwendung korrekt erhält nicht ausgeführt, und die folgenden Fehler angezeigt innerhalb der Windows-Protokolle:
Faulting application myapp.exe, version 1.0.0.0, time stamp 0x4b8304c3,
faulting module KERNEL32.dll, version 6.0.6002.18005, time stamp 0x49e03821,
exception code 0xc0000142, fault offset 0x00009eed, process id 0x10ec,
application start time 0x01cab736950a64b5.
Einmal Die Desktop-Interaktion ist aktiviert, die Anwendung wird normal ausgeführt.
Irgendwelche Gedanken?
Vielen Dank für Ihre Zeit.
Ist dies für Vista und später? –
Der Debugging-Teil ist kein guter Grund. Sie könnten eine ausführbare Datei und den Dienst beide verwenden eine gemeinsame Assembly, die die gesamte Funktionalität enthält. –
Ja, der Windows-Dienst läuft unter Windows Server 2008 Web Edition. Windows-Dienst und ausführbare Datei werden mit Visual Studio 2008 gegen die mit .NET Framework 3.5 – jdecuyper