Hi,
ich habe ein Problem beim Starten von einem Dienst. Ich habe eine Anwendung erstellt, mit deren Hilfe WinVNC (UltraVNC) gestartet werden kann.
Bei folgender Theorie lieg ich ja richtig?
Wenn ich mit Process.Start(...) eine Anwendung starte, dann läuft diese als Anwendung für einen bestimmten User. Loggt sich dieser User aus, läuft meine Anwendung auch nicht mehr.
Ein Dienst hingegen wird (meist) vom System gestartet und ist auch ohne einen angemeldeten Benutzer aktiv.
Mein Problem ist nähmlich, dass standardmäßig nach 15 Min. der Bildschirmschoner mit Passwortabfrage zur Reaktivierung aktiv wird -> man kann den Bildschirmschoner nur durch ein erneutes Anmeldem am System deaktivieren -> ergo gehe ich davon aus, dass sich jeder Benutzer automatisch nach 15 Inaktivität ausloggt und ich kann mich somit nicht mehr per VNC am Rechner anmelden.
Nach einigen google-Recherchen bin ich auf den Übergabeparameter -servicehelper gestoßen, der WinVNC als dienst startet und sogar das Icon im System Tray anzeigt -> genau das was ich will 😁
Leider lässt sich die WinVNC.exe mit Parameter nicht mit Process.Start(Datei, Parameter) starten, allderdings konnte VNC + servicehelper Parameter auch nicht mit der Kommandozeile gestartet werden.
Jetzt hab ich mir gedacht, dass man nicht "einfach so" einen Dienst starten kann, sondern bestimmte Methoden benötigt, die mir das übernehmen -> ABER eigentlich übernimmt das ja schon UltraVNC für mich 🤔
Bin aufjeden Fall völlig ratlos 😁
Erstmal Danke fürs Lesen!
Lg chriss
was du suchst ist wohl...
ProcessStartInfo pi = new ProcessStartInfo();
pi.FileName = "vnc.exe";
pi.Arguments = "servicehelper";
Process.Start(pi);
wir haben RealVNC im Einsatz.
Da musst du erst registrieren (musst du bei jedem Dienst)
winvnc4.exe -noconsole -register
und dann starten
winvnc4.exe -noconsole -start
MFG Veasel
Hi,
erstmal vielen Dank für deine Antwort veasel, meine kommt etwas spät, da ich die ganzen ferien nicht am PC war :evil:
Mit dem o. g. Beispiel starte ich imho einen Prozess (mit dem User der aktuell die Anwendung benutzt), leider lässt sich UltraVNC so nicht starten, bzw. es wird kein Icon im SysTray angezeigt und es killt sich automatisch nach einiger Zeit.
Ich denke dass ich WinVNC als Dienst, also mit dem System-Account, starten muss, ich bin aber bisher noch nicht dahinter gekommen, wie ich eine Anwendung als Dienst starten kann?
lg Chriss
hallo,
willkommen in 2008!!
ich kann mich irren aber meiner meinung nach kann man eine anwendung nicht einfach so als dienst starten. dienste müssen registriert werden und dann üder das dienstsnapin gestartet werden.
bei vnc ist denke ich beides startbar.
kannst du bei der installation von ultraVNC schon auswählen, dass es ein serverdienst sein soll? (so geht das bei RealVNC)
Geht UltraVNC überhaupt als serverdienst zu starten?
MFG Veasel
Hi veasel,
und nochmal vielen Dank für deine Antwort!
Wenn ich UltraVNC zum Autostart (Registry) hinzufüge (inkl. -serverivehelper) Funktioniert alles wunderbar (ich denke weil es dann vom System und nicht von einem Benutzer gestartet wird - im Taskmanager wird beim Benutzer auch SYSTEM angezeigt)
Ich möchte auch keinen Dienst installieren, da ich UltraVNC nur in bestimmten Situationen verwenden möchte.
Evtl. würde es auch schon funktionieren, wenn ich die Anwendung unter dem SYSTEM-Benutzer starten könnte, falls man soetwas in c# realisieren kann?
Lg Chriss
hallo chriss_2oo4,
wie das mit dem SYSTEM nutzer geht, kann ich dir erstmal auch nicht sagen, aber du kannst bei der ProcessStartInfo Klasse auch einen username und ein password setzen unter dem der Process dann laufen soll.
Hier könntest du ja den lokalen Administrator angeben.
irgendwie hab ich auch noch nicht ganz verstanden was du machen willst.
wenn der rechner nach 15 min. gesperrt ist und VNC als Server laufen würde, dann kannst du auch nichts machen, denn du hast ja das passwort des nutzers nicht...oder?
erklär bitte nochmal was du genau vor hast.
danke!!
grüße von der ostsee...
MFG Veasel
Hi,
sorry für die späte Antwort... ich dachte mir wird eine Email zugestellt, sobald jemand antwortet.
Das Problem ist, wenn ich VNC mit einem Benutzer starte, dann kann ich mich nur solange per VNC auf dem Rechner einloggen, wie der Benutzer seinen Account nutzt.
Wenn sich nun der Benutzer automatisch nach 15 Min abmeldet (= Bildschirmschoner + Passwortabfrage) kann ich mich auch nicht mer via VNC auf 'm Rechner einloggen -> SYSTEM-Benutzer wäre hilfreich, da dieser immer verfügbar ist.
Aber wie ich gesehen habe, wurde VNC doch als Dienst auf dem Rechner installiert. Mein Problem ist es nun VNC als Dienst von meiner Anwendung aus zu starten.
Ich hab google Benutzt und auch einige Beispiele gefunden, aber
System.ServiceProcess
gibt es bei "normalen" Windows-Anwendungen nicht -> Ist es möglich, dass ich diesen Namespace nur für die Programmierung von Diensten einsetzen kann und somit auch nur einen Dienst von einem anderen Dienst aus steuern kann?
Lg Chriss
hallo,
also dienste kann nicht so starten wie programme. du musst dienste registrieren und dann über den Dienstemanager starten.
meiner meinung nach bietet aber VNC das schon out of the box...
[B]registrieren:[/B]
winvnc4.exe -noconsole -register
[B]starten:[/B]
winvnc4.exe -noconsole -start
[B]stoppen:[/B]
winvnc4.exe -noconsole -stop
[B]unregister:[/B]
winvnc4.exe -noconsole -unregister
anwenden kannst du das so wie ich es weiter oben schon geschrieben habe mit einer ProcessStartInfo, da alle infos rein, exename, parameter und dann an Process.Start() übergeben.
an sonsten guck dir mal Windows Dienste aus einem Form Steuern
an. das hilft dir vielleicht auch weiter.
ist denn der VNC dienst registriert nur nicht gestartet?
viele grüße...
MFG Veasel
Hi veasel,
zunächst nochmal danke für deine Antworten und ein Link zu den möglichen Parametern von WinVNC: Parameter
Meinst du mit registrieren, einen Service installieren, so dass er dann unter Systemsteuerung -> Verwaltung -> Dienste angezeigt wird, oder ist registrieren etwas anderes?
Hab fogendes schon probiert:
winvnc.exe -sinstall -> Installiert den Dienst
winvnc.exe -service -> Startet den Service
winvnc.exe -servicehelper -> Startet den Servicehelper (SysTray Icon)
winvnc.exe -kill -> Beendet VNC
winvnc.exe -remove -> Deinstalliert den Service
Leider startet auch so kein VNC 🙁
Lg Chriss
hallo,
ja das meine ich mit registrieren.
okay...was verstehst du unter VNC starten?
wenn der Dienst läuft ist doch alles okay...oder nicht?
dann kannst du doch von einem anderen PC unter Verwendung des VNC Viewers auf den PC (auf dem der Dienst läuft) zugreifen.
[B]Viewer starten:[/B]
VNC4\vncviewer.exe
MFG Veasel
Hi,
das ist ja genau mein Problem, wenn ich die EXE als Anwendung (...\winvnc.exe), also mit dem Benutzer mit dem ich gerade angemeldet bin, starte, dann funktioniert VNC nur solange bis der Bildschirmschoner einsetzt.
Die EXE als Service (...\winvnc.exe -service) starten geht leider nicht.
Lg Chriss
ich versteh absolut nicht wo das problem ist...
du installiert VNC als Server (ServiceMode), dann wird der Service und der ServiceHelper bei jedem Start des PC gestartet. und bleibt auch gestartet wenn sich der Nutzer abmeldet! (das ist der Rechner den man remote steuern möchte)
auf deinem Rechner startest du den Viewer, gibts den Namen oder IP des ersten Rechners ein und ggf. das VNC-Password und dann siehst du den Desktop des anderen PCs.
Wo setzt du deine Software ein und was soll die dann da machen...??
PS: wenn der ScreenSaver an ist und eine Passwortabfrage eingeschaltet ist, dann wird der Benutzer nicht abgemeldet, sondern nur der PC gesprerrt...alles andere wäre ja auch schlimm. d.h. alle Programme die laufen, laufen auch im hintergrund weiter, bis der Nutzer die Sperre aufhebt. Wenn du die Sperre mit dem AdminKonto aufhebst, dann werden auch alle Programme des Nutzers beendet. Steht aber auch da...
wie gesagt, ich verstehe nicht, was?, wo? und von wo? aus dein programm etwas machen soll...
MFG Veasel
Hi,
also ob nun der Bildschirmschoner, die Anwendungen sperrt, oder diese beendet und nach dem login wieder startet ist in meinem Fall egal.
Ich habe ein Tool das den VNC-Datenverkehr überwacht, Zugriffe loggt usw. Die Anwendung besitzt einen Menüpunkt, der es dem Benutzer erlaubt, VNC zu deaktiveren. Nach dem der Benutzer VNC deaktiviert hat, soll er aber auch die Möglichkeit haben VNC wieder zu aktivieren (das ganze soll ohne neustart von statten gehen).
lg Chriss
Wenn UltraVNC einmal als Service registriert wurde all you need is: ServiceController.
ServiceController svrCtrl = new ServiceController("VNC Server");
Console.WriteLine(svrCtrl.DisplayName + " is " + Enum.GetName(typeof(ServiceControllerStatus), svrCtrl.Status));
switch (svrCtrl.Status)
{
case ServiceControllerStatus.PausePending:
svrCtrl.WaitForStatus(ServiceControllerStatus.Paused);
break;
case ServiceControllerStatus.StopPending:
svrCtrl.WaitForStatus(ServiceControllerStatus.Stopped);
break;
case ServiceControllerStatus.StartPending:
case ServiceControllerStatus.ContinuePending:
svrCtrl.WaitForStatus(ServiceControllerStatus.Running);
break;
}
switch (svrCtrl.Status)
{
case ServiceControllerStatus.Paused:
svrCtrl.Continue();
svrCtrl.WaitForStatus(ServiceControllerStatus.Running);
break;
case ServiceControllerStatus.Stopped:
svrCtrl.Start();
svrCtrl.WaitForStatus(ServiceControllerStatus.Running);
break;
case ServiceControllerStatus.Running:
svrCtrl.Stop();
svrCtrl.WaitForStatus(ServiceControllerStatus.Stopped);
break;
}
Console.WriteLine(svrCtrl.DisplayName + " is " + Enum.GetName(typeof(ServiceControllerStatus), svrCtrl.Status));
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
Hi,
die Klasse ServiceController ist doch Mitglied des Namespace System.ServiceProcess und den gibt bei mir leider nicht, d. h. es gibt ihn nur wenn ich ein Dienst erstellen möchte. Bei einer normalen Windows Anwendung geht leider nix... gibts vielleicht einen Trick das auch bei einer normalen Anwendung zu nutzen?
lg Chriss
?( Verweis hinzufügen ?(
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
hallo,
genau diese info habe ich dir doch schon weiter oben mit dem link Windows Dienste aus einem Form Steuern gegeben.
bitte auch lesen, da steht alle drin.
MFG Veasel
Hi,
ok vielen Dank, hat soweit geklappt.
@veasel
Ich hab den Beitrag schon gelesen, ich wusste jedoch nicht dass ich das ServiceProcess zu meinen Referenzen hinzufügen kann.
Lg Chriss