Forum: PC-Programmierung Installierter Service funktioniert nicht, nur bei Doppelklick auf die exe


von sunshineh (Gast)


Lesenswert?

Hi,

ich habe Windows 8.1 und mir einen Windows Service programmieren lassen.
Dieser Service lädt von meiner Webseite alle 30 Sekunden einen Messwert.

Wenn ich Ihn per doppelklick starte, öffnet sich ein dos-Fenster und ich 
sehe, wie die Daten heruntergeladen werden.

Wenn ich nun diesen wieder schließe, per cmd in den entsprechenden 
Ordner wechsle und dort den Namen des Service gefolgt von install 
eingebe, so kann ich diesen dann im "Services" Fenster sehen und 
neustarten.
Leider lädt er aber keine Daten herunter, sondern gibt nur folgende 
Zeile aus:
2015-10-30 15:44:55 No data.
2015-10-30 15:44:59 Failed to get value
Unable to connect to the remote server
2015-10-30 15:44:59 No data.
The Data-Files are empty.

Beim Entwickler habe ich nachgefragt warum und weshalb das so sein kann 
und dieser zeigte mir nur, dass bei ihm alles wie gewünscht funktioniert 
- weiß aber auch keine Lösung.

Kann sich hier wer vorstellen warum sowas so sein kann bzw. wie ich es 
anstelle, damit er auch im Hintergrund läuft?

von Dödel (Gast)


Lesenswert?

Unter welchem Account läuft der Dienst. Normalerweise hat LocalService 
keinen Zugriff aufs Netzwerk.
Starte diesen mit einem Useraccount.

von sunshineh (Gast)


Lesenswert?

Sorry für die dumm Frage, aber wie mache ich das?

Ich rufe bis jetzt cmd als Administrator auf, ist das falsch?

von oszi40 (Gast)


Lesenswert?

sunshineh schrieb:
> in den entsprechenden Ordner wechsle und dort gehts

Dann ist wahrscheinlich der Pfad nicht bekannt?
Auch mal Rechte genauer ansehen.

von Dauergast (Gast)


Lesenswert?

Wo gibt der Service seine Meldungen denn aus? Auf irgendeiner Konsole 
kann er nichts ausgeben. Wenn er das tut, läuft er nicht als Service.

Stehen irgendwelche Meldungen zum Thema im Event Log?

Die Selbstinstallation eines Service funktioniert nicht mehr so wie 
"früher", Deine Angaben deuten darauf hin, das hier genau dieses Problem 
vorliegt.

"Bei mir gehts" als einzige Reaktion eines Entwicklers bedeutet exakt 
"ich habe da irgendwas zusammengeschrummelt, ohne es zu verstehen, also 
laß mich in Ruhe".

von sunshineh (Gast)


Lesenswert?

Also wenn ich mir die Properties des Services ansehe, so steht dort 
unter
"Log On", "Local System account" aber der Haken bei
"Allow services to interact with dektop" ist draußen.

von Dauergast (Gast)


Lesenswert?

sunshineh schrieb:
> aber wie mache ich das?

Administrative Tools
  Computer Management
    Services and Applications
      Services
        (DeinService)
          RightClick - Properties

Der "Local System Account" kann natürlich auf's Netzwerk zugreifen, aber 
NICHT auf Netzwerklaufwerke.

Und "Allow service to interact with desktop" erlaubt natürlich keine 
Konsolenausgaben.

von sunshineh (Gast)


Lesenswert?

Der Service schreibt eigentlich in ein txt.
Nur wenn ich auf ihn Doppelklicke sehe ich die Konsole und das er Daten 
herunterlädt.

Wie installiert ma den Service den richtig?

von Dauergast (Gast)


Lesenswert?

sunshineh schrieb:
> Nur wenn ich auf ihn Doppelklicke sehe ich die Konsole und das er Daten 
herunterlädt.

Du meinst, wenn Du ihn im Windows Explorer doppelklickst? Naja, dann 
läuft er NICHT als Service, sondern als normales Konsolenprogramm.

> Wie installiert ma den Service den richtig?

Mit dem zum Service mitgelieferten Installer.

von sunshineh (Gast)


Lesenswert?

Installer ist leider keiner dabei.

Wenn die exe als Konsolenprogramm läuft, dann müsste sie ja auch als 
service laufen, oder?

Ich bin eigentlich als Benutzer am pc angemeldet, sage aber bem 
cmd-Aufruf, als Administrator ausführen.
woran kann ich bei einem Dienst erkennen, ob er ins Internet darf oder 
nicht?

von Dauergast (Gast)


Lesenswert?

sunshineh schrieb:
> Installer ist leider keiner dabei.

Lustig. Und was meint der Entwickler, wie Du ihn dann installieren 
sollst?

> Wenn die exe als Konsolenprogramm läuft, dann müsste sie ja auch als
> service laufen, oder?

Nein. "Früher" konnte man einen Service so schreiben, das er sich quasi 
"selbst" installiert - aber spätestens seit Win7 geht das nicht mehr.

von Peter II (Gast)


Lesenswert?

Dödel schrieb:
> Unter welchem Account läuft der Dienst. Normalerweise hat LocalService
> keinen Zugriff aufs Netzwerk.
> Starte diesen mit einem Useraccount.

das ist nicht richtig.

Als LocalService hat er kein zugriff auf Freigaben, aber 
Sockets/Netzwerk geht ohne Probleme.

Das kann also nicht das Problem sein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dauergast schrieb:
> Nein. "Früher" konnte man einen Service so schreiben, das er sich quasi
> "selbst" installiert - aber spätestens seit Win7 geht das nicht mehr.

Natürlich geht das. Die Selbstinstallation erfordert 
Administratorrechte, und einen Kommandozeilenparameter zum Unterscheiden 
zwischen Aufruf durch SCM und Kommandozeile. Da hat sich nichts 
geändert, das geht auch auf 2012 Server R2 immer noch genau so.

von Dauergast (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> das geht auch auf 2012 Server R2 immer noch genau so

Du hast Recht ... funktioniert immer noch auf W8.1/64 und W10. Auf 
Kommentare im Source ist also auch kein Verlass mehr :(

von sunshineh (Gast)


Lesenswert?

Also nochmal zum Verständnis für mich.

Der Service funktioniert an sich, dass sehe ich wenn ich es per 
Doppelklick auf die exe als Konsolenanwendung ausführe. Er kommt ganz 
normal ins Internet und ich muss ihn nirgends freischalten.

Wenn ich ihn installiere gehe ich so vor. Ich starte cmd als 
Administrator, gehe in den entsprechenden Ordner und sage den exe Namen 
führt von install.

Dann öffne ich Services.msc als User, nicht als Admin, gehe auf den 
Service und auf "Start", ich bekomme keine weitere Meldung einer 
Firewall oder ähnlichen, nur vom Programm die Info, dass er den 
Remote-Server nicht connecten kann.

Für mich heißt dass doch, dass ich durch die Installation nicht auf die 
selben Sachen zugreifen kann, wie durch den Start als Konsolenanwendung.

Avast und McAfee habe ich testweise deaktiviert, doch das hat nichts 
geholfen.

Wie kann ich nun feststellen, warum der Dienst nicht läuft?

von Georg (Gast)


Lesenswert?

sunshineh schrieb:
> Für mich heißt dass doch, dass ich durch die Installation nicht auf die
> selben Sachen zugreifen kann, wie durch den Start als Konsolenanwendung.

Dann starte den Dienst doch mal testhalber mit deinem eigenen Userkonto.

Georg

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

sunshineh schrieb:
> Der Service funktioniert an sich, dass sehe ich wenn ich es per
> Doppelklick auf die exe als Konsolenanwendung ausführe. Er kommt ganz
> normal ins Internet und ich muss ihn nirgends freischalten.

Dann läuft das Ding aber nicht als Service ("Dienst"), sondern als 
stinknormales Programm. Und das tut es in dem Benutzerkonto, in dem Du 
gerade angemeldet bist.

Wenn Du es als Dienst installierst, läuft es in einem anderen 
Benutzerkonto - das kannst Du im Dienstemanager auch einstellen 
(services.msc).

Stell' da halt Dein Benutzerkonto ein (dazu musst Du Benutzernamen und 
Passwort angeben, und Dein Konto muss das Recht "Log on as a service" 
haben.

https://technet.microsoft.com/de-de/library/cc794944(v=ws.10).aspx

von sunshineh (Gast)


Lesenswert?

Also, dass habe ich nun umgestellt. Nun erhalte ich die Meldung:

Windows could not start the Service) on Local Computer.

Error 1069: The service did not start due to a log-on failure.

von Christian R. (supachris)


Lesenswert?

sunshineh schrieb:
> Also, dass habe ich nun umgestellt. Nun erhalte ich die Meldung:
>
> Windows could not start the Service) on Local Computer.
>
> Error 1069: The service did not start due to a log-on failure.

Hast du denn dein Passwort korrekt eingegeben?

von Klaus (Gast)


Lesenswert?

sunshineh schrieb:
> Also, dass habe ich nun umgestellt. Nun erhalte ich die Meldung:
>
> Windows could not start the Service) on Local Computer.
>
> Error 1069: The service did not start due to a log-on failure.

Hm. Diese Fehlermeldung deutet, nach etwas suchen im Internet, darauf 
hin, dass Du einen der genannten Schritte nicht, oder nicht korrekt 
ausgeführt hast. (Es gibt allerdings wahrscheinlich noch weitere 
Möglichkeiten).

Prüfe bzw. wiederhole folgendes:

> Stell' da halt Dein Benutzerkonto ein (dazu musst Du Benutzernamen
> und Passwort angeben, und Dein Konto muss das Recht "Log on as a service"
> haben.

von Georg (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Wenn Du es als Dienst installierst, läuft es in einem anderen
> Benutzerkonto

Es gibt hunderte Dienste auf dem PC, und fast alle Entwickler kriegen es 
hin, dass der Dienst auf das zugreifen kann was er braucht, ohne dass 
der Benutzer eingreifen muss. In diesem speziellen Fall scheint aber 
nicht nur der User/TO wenig Ahnung zu haben, sondern auch sein 
"Softwareentwickler".

Georg

von sunshineh (Gast)


Lesenswert?

Ich habe gerade gesehen, dass die Hilfe-Seite ja für einen Windows 
Server gedacht ist. Ich habe hier aber nur einen normalen Windows 8.1 
PC, auf dem ich den Dienst laufen lassen möchte.

Das sollte doch auch funktionieren, oder?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja, die Installation und der Gebrauch von Services unterscheidet sich 
nicht zwischen den Server- und nicht-Server-Versionen von Windows.

Die einzigen Windows-Versionen, die keine Services kannten, waren 
Windows 95 und seine Aufgüsse (98 & Me), aber jedes ernstgemeinte 
Windows seit 1993 kennt Services.

von sunshineh (Gast)


Lesenswert?

Hi,

gerade habe ich meinen 360 Total Security Scan durchlaufen lassen.
Er meldet mir die entsprechende exe mit EUR/QVM03.0.Maleware.Gen

Muss ich mir hier Gedanken machen, dass der Entwickler mich betrügen 
wollte?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, Werkzeugen mit Namen wie "360 Total Security" ist auch nicht zu 
trauen, es gibt durchaus "false positives".

Mehrere Virenscanner gleichzeitig kannst Du hiermit 
https://www.virustotal.com/de/ ausprobieren.

Wenn es da mehrere Treffer gibt, solltest Du mit dem "Entwickler" mal 
ein ernstes Wörtchen reden.

von sunshineh (Gast)


Lesenswert?

OK, ich habe nun die exe mit virustotal.com durchlaufen lassen und 
anscheinend ist sie sauber.
Ich habe die exe nun auf einem anderen PC installiert und dort 
funktioniert alles einwandfrei.

Habt ihr noch nen Tipp, was ich hier am Notebook machen kann bzw. was 
ich dem entwickler ausrichten kann?
Ich hab keinen Plan was ich noch tun könnte und muss den Service hier 
zum Laufen bringen :-(

von Peter II (Gast)


Lesenswert?

sunshineh schrieb:
> Habt ihr noch nen Tipp, was ich hier am Notebook machen kann bzw. was
> ich dem entwickler ausrichten kann?
> Ich hab keinen Plan was ich noch tun könnte und muss den Service hier
> zum Laufen bringen :-(

das installieren klappt ja scheinbar, sonst würde er nicht in "Services" 
stehen.

Lade dir mal 
https://technet.microsoft.com/de-de/sysinternals/bb896645.aspx runter.

Setzte einen Filter auf den Name der exe und starten dann den Dienst.

von sunshineh (Gast)


Lesenswert?

@Peter II
Danke, super Tipp!

Das komische ist, dass der Prozess Monitor anzeigt, das der Service doch 
ins Internet kann. Dahinter steht doch SUCCESS.

Kann ich hier nun irgendwie erkennen, warum der Service auf diesem 
Notebook keine Daten abruft, auf einem anderen aber schon?

von sunshineh (Gast)


Lesenswert?

Ich habe nun mit dem Process Monitor die Communication hier auf meinem 
Notebook und auch die dem anderen PC beobachtet.
Bei dem anderen PC, bei dem der Dienst problemlos funktioniert, heißt es 
immer TCP Send und TCP Receive zu der externen IP-Adresse

Bei mir hier lokal sieht wie im Anhang aus, er versucht einen TCP 
Reconnect zu
127.0.0.1:49701 -> 127.0.0.1:57482
Das sieht doch so aus als würde er die Anfrage an sich selbst senden, 
weil er nicht raus darf??

Wie komme ich nun an die Software, die diesen Dienst blockt? Kann ich 
dies auch irgendwie mit dem ProzessMonitor filtern?

von Peter II (Gast)


Lesenswert?

sunshineh schrieb:
> Wie komme ich nun an die Software, die diesen Dienst blockt? Kann ich
> dies auch irgendwie mit dem ProzessMonitor filtern?

war auf dem PC mal eine Firewall installiert (also nicht die von MS)?

Norton hatte mal ein Problem, wenn man es entfernt hat blieben die 
regeln bestehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

sunshineh schrieb:
> Das sieht doch so aus als würde er die Anfrage an sich selbst senden,

Ja.

> weil er nicht raus darf??

Nö. Vermutlich weiß das Ding gar nicht, wohin es etwas senden soll.

von Peter II (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Nö. Vermutlich weiß das Ding gar nicht, wohin es etwas senden soll.

guter Einwand. Eventuell steht ja die Parameter für den Dienst in der 
Registry bei Current-User und da kommt der Dienst nicht ran.

von sunshineh (Gast)


Lesenswert?

OK, es kann schon sein, dass ich früher andere Antivirenprogramme bzw. 
Firewalls installiert hatte...

Der Pfad wohin er soll steht eigentlich in einem *.exe.config File. Ich 
weiß aber nicht, ob dieser intern in die Registry geschrieben wird, habe 
aber gerade den Entwickler deshalb angeschrieben.


//---


Mir ist noch etwas anderes aufgefallen, hat aber nichts direkt mit dem 
Problem zu tun.
In der Services.msc habe ich keine Spalte mit der PID und kann diese 
auch nicht über View > Add/Remove Columns ergänzen. Kennt ihr das?

von Georg (Gast)


Lesenswert?

sunshineh schrieb:
> In der Services.msc habe ich keine Spalte mit der PID und kann diese
> auch nicht über View > Add/Remove Columns ergänzen.

Verwechselt du das mit Unix/Linux? In Windows löschst du einen Prozess 
mit seinem Namen, nicht einer PID.

Georg

von Tek (Gast)


Lesenswert?

sunshineh schrieb:
> In der Services.msc habe ich keine Spalte mit der PID und kann diese
> auch nicht über View > Add/Remove Columns ergänzen. Kennt ihr das?

Verwechselst Du das vielleicht mit dem Taskmanager? Da wird bei den 
Diensten die PID angezeigt, im Dienste Fenster gibts die Spalte afaik 
nicht.

von bluppdidupp (Gast)


Lesenswert?

Als Workaround könnte man die .exe auch via Taskplaner bei Rechnerstart 
starten lassen.

von c-hater (Gast)


Lesenswert?

Dauergast schrieb:

> Nein. "Früher" konnte man einen Service so schreiben, das er sich quasi
> "selbst" installiert - aber spätestens seit Win7 geht das nicht mehr.

Natürlich geht das. Die Exe muß nur die entsprechende Manifest-Resource 
beherbergen, die klarstellt, dass sie Admin-Rechte benötigt und der User 
muss ggf. den UAE-Popup abnicken.

Und dann geht alles im Prinzip ganz genau so, wie es schon immer ging, 
mindestens seit seligen NT3.5-Zeiten.

Genau genommen hat sich am Sicherheitskonzept von WindowsNT nämlich seit 
unvordenklichen Zeiten rein garnix Nennenswertes mehr geändert. Der 
ganze auffällige, mit Vista eingeführte UAE-Quatsch (und mit Win7 wieder 
etwas weniger auffälig gewordene) ist nur übergestülpte 
Pseudosicherheit, die am Grundkonzept eigentlich absolut garnix geändert 
hat. Ungefähr so sinnvoll und hilfreich wie der per default nicht direkt 
"anmeldbare" root-account von Ubuntu oder andere, ähnlich idiotische 
"Sicherheits"-Einrichtungen anderer OS.

Alles nur gleichermaßen hilflose Versuche, dem Hauptproblem irgendwie 
beizukommen: dem in mindestens 95% aller Fälle vollkommen unfähigen und 
unwissenden DAU vor dem Monitor, der einerseits das System möglichst 
umfassend benutzen können soll, sich dabei aber andererseits möglichst 
nicht gleichzeitig in die Scheisse reiten soll.

Mein Fazit: Jeder dieser Ansätze ist letztlich gleichermaßen grandios 
gescheitert. Nutzerkompetenz läßt sich halt offensichtlich durch nix 
ersetzen, nur dadurch, eben diese zu schaffen. Und dazu hat wohl 
eigentlich keiner dieser idiotischen Ansätze irgendwie hilfreich 
beigetragen. Die Ubuntu-User kennen jetzt ihr Passwort sehr schnell 
auswendig (weil sie es für jeden Scheiß eintippen müssen) und die 
Wixdos-User können einen Button mehr anklicken als früher. Wow, welch 
ein grandioser "Gewinn" an Sicherheit...

von sunshineh (Gast)


Lesenswert?

Ja, das habe ich wirklich mit dem Taskmanager verwechselt! Vielen Dank!

Der Entwickler hat mir nun geschrieben, dass das Programm die URL beim 
Start des Programms aus dem Config-File holt.
Das hilft mir nur leider nicht weiter :-(

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

wo sucht denn das Programm die Konfigdatei?
Du schreibst das Programm aus der Dosbox gestartet zu haben - bist du da 
vorher in den Ordner gewechselt? Funktionert es auch wenn du das 
Programm aus einem anderen Ordner mit Angabe des Pfads startest?
Was sagt der Prozessmonitor, sollte doch auch zu sehen sein.

Sascha

von sunshineh (Gast)


Lesenswert?

Also ich gehe in den entsprechenden Ordner und klicke doppelt auf die 
exe-Datei, dann geht es.
Das config-File liegt auch in diesem Ordner. Wenn ich den Doppelklick 
durchführe, bin ich ganz normal angemeldet, nicht als Administrator. Ich 
muss allerdings die Meldung von Windows noch bestätigen, dass ich diesem 
Dienst traue.

Wenn ich den Dienst (also die gleiche exe) installiere, starte ich cmd 
als Administrator. Das Confi-File liegt aber auch in diesem Fall in dem 
Ordner der exe.

Der Entwickler meinte nun:
"Check your network settings - proxy etc. That's definitely your local 
configuration issue. If it doesn't help I will try to disable proxy 
programmatically just for needed requests"

Was meint ihr dazu?

von G. H. (schufti)


Lesenswert?

Laptop platt machen und neu aufsetzen anstatt noch tagelang 
hermumprobieren und virtuelle Windmühlen bekämpfen ....

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Programm wird nicht auf seine Konfigurationsdatei zugreifen können.

Lass' das Ding als Service laufen, schnapp' Dir den Process Explorer und 
lass' Dir die Eigenschaften des Prozesses anzeigen. Dort wird auch das 
Arbeitsverzeichnis angezeigt - in dem erwartet das Programm seine 
Konfigurationsdatei.

Vernünftige Entwickler bauen in ihre Programme Log-Ausgaben ein, in 
denen sie unter anderem vermerken, ob ihre Programme auf 
Konfigurationsdateien zugreifen können.

von sunshineh (Gast)



Lesenswert?

@Rufus:
Das war es leider nicht. Ich sehe im Process Monitor, dass das 
Config-File ausgelesen wird :-(

Den Laptop platt machen kann ich aktuell leider noch nicht, da ich noch 
ein paar  Sachen hier brauche und noch nicht neuinstallieren kann.

Für mich ist die IP-Geschichte unverständlich, wenn er doch das 
Config-File mit der Internetadresse ausliest.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

sunshineh schrieb:
> Ich sehe im Process Monitor, dass das Config-File ausgelesen wird

Tatsächlich? Ich kann das da nicht erkennen.
Im Verzeichnis c:\ep2\output wird nach Dateien gesucht, die 
provider_20151102*.csv heißen, aber gelesen wird davon auch keine.

Es wird eine Logdatei beschrieben:

  c:\ep2\logs\2015-11-02.log

Hast Du da mal 'reingesehen?

von Tek (Gast)


Lesenswert?

Schau Dir doch mal die Process Monitor Ausgabe auf dem PC auf dem es 
funktioniert an, wird da die gleiche Abfolge nur mit richtiger IP 
angezeigt?

von sunshineh (Gast)


Lesenswert?

Da ich noch keine Lösung gefunden habe, nutze ich das Programm als 
Konsolenprogramm. Allerdings habe ich nun das Problem, dass wenn ich auf 
ich auf das File zugreife, das periodische Herunterladen der Werte mit 
der Meldung "The process cannot access the file ... because it is beeing 
used by another process."
Kann man mit Visual Studio das File so erstellen, dass ich es mit einem 
anderen Programm auslesen kann? Muss ich das File zuvor kopieren?

von Georg (Gast)


Lesenswert?

sunshineh schrieb:
> Kann man mit Visual Studio das File so erstellen

Du meinst, ein Programm so erstellen? Es gibt verschiedene 
Möglichkeiten, z.B. kann man nach der Taktik verfahren File öffnen - 
schreiben/lesen - sofort wieder schliessen, und wenn es nicht klappt 
nach x sec wieder probieren. Oder man öffnet die Datei in einem 
geeigneten sharing mode. In beiden Fällen muss man das aber in beiden 
Programmen richtig regeln, sowohl im Service als auch in dem Programm 
mit dem du zugreifen willst.

Informiere dich über sharing modes.

Georg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.