C# Ausführen von Windows-Form-Anwendung aus dem Dienst (und in Vista)

Ich Schreibe eine Applikation in C# und muss als Dienst ausgeführt werden, sondern auch von Benutzer-Interaktion. Ich verstehe, dass Dienste haben keine Benutzeroberfläche, etc, also habe ich aufgeteilt, mein Programm in eine windows form-Anwendung und einem service, der kann mit jedem anderen kommunizieren.

Das problem das ich habe ist, dass ich den Dienst benötigen, um sicherzustellen, dass die windows-form-Anwendung der immer ausgeführt wird, und starten Sie es neu, wenn es nicht ist. Ich bin in der Lage zu erkennen, wenn es ausgeführt wird, und starten Sie es mit dem folgenden code auf Windows 2000/XP:

System.Diagnostics.Process.Start("ExePath");

aber auf Vista, es läuft der neue Prozess als ein System-Prozess ist für den Benutzer unsichtbar. Hat jemand die Möglichkeit, um dieses? Gibt es eine Möglichkeit zu erkennen, welche Benutzer derzeit angemeldet ist, und führen Sie den neuen Prozess, so dass Benutzer? Ich brauche nicht zu berücksichtigen, für die schnelle Benutzerumschaltung an dieser Stelle. Etwas - etwas - basic genügen würde.

Ich wäre dankbar für jede Hilfe oder Tipps, die Sie haben auf das Thema.

Muss ich klarstellen, dass ich die Einstellung "Allow service to interact with desktop" - option, wenn der Dienst installiert ist. Dies ist, was ermöglicht es die Arbeit, die auf 2000/XP. Aber Vista hat immer noch den oben genannten problem.

  • Bin ich etwas fehlt? Wenn Sie einen Dienst, der immer läuft... warum ist es wichtig, wenn Ihr windows form-Anwendung ausgeführt wird?
  • Denn ich brauche eine Möglichkeit für den service zur Kommunikation mit dem Benutzer direkt. Es gibt eine Menge Gründe, aber die meisten basic-Beispiel ist für die Aktualisierung dar.
  • Ich bin mit den anderen hier... ich vermute, dass Sie dabei sind der falsche Ansatz, zu welchem problem Sie zu lösen versuchen. Wenn Sie eine UI-dann haben Sie wahrscheinlich shouldn ' T be using a service-Modell. Vielleicht etwas, das sich in den system-tray...?
  • Meine form-Anwendung tatsächlich befinden sich in der system tray. Ich bin offen für Ideen, wenn ich unter der falsche Ansatz. Bisher wurde ich noch nicht überzeugt von, dass. Ich brauche den Dienst, um in der Lage sein, direkt zu kommunizieren mit dem Benutzer, wenn bestimmte Ereignisse passieren. Gibt es einen besseren Weg, dies zu tun?
Schreibe einen Kommentar