![]() |
Dienste im Allgemeinen und im Besonderen unter XP
Hallo Leute,
ich habe das Problem das ich einen Dienst geschrieben habe der eigentlich nichts machen soll außer einen TCP-Server aufmachen und dann RPC-Kommandos auswerten. Unter XP hat dieses gemeint den Dienst wieder anhalten zu können. Als Workaround lasse ich jetzt meinen Dienst die Uhrzeit auslesen und irgendwohin schreiben. Dass funktioniert auch, aber der Dienst krallt sich jetzt Rechenzeit was auch nicht besonders schön ist. Deshalb noch mal meine Frage ob es da nicht eine andere Möglichkeit gibt XP mitzuteilen das es den Dienst gefälligst nicht wieder anhalten soll. Ich habe auch schon mal probiert nur dann die Uhrzeit auszulesen wenn ich XP unter mir habe, aber sobald ich in meinem Dienst OSVersionEx aufrufe kann ich den Dienst nicht mehr starten. Es kommt diese wunderschöne Meldung mit interner Windowsfehler und an seinen Administrator wenden. Kann mir irgendjemand helfen oder vielleicht nen Tip geben |
Re: Dienste im Allgemeinen und im Besonderen unter XP
Ich würde den Grund ermitteln, warum Windows deinen Dienst wieder anhält. Zeig doch mal etwas Quellcode, irgendwas machst du da wohl falsch.
|
Re: Dienste im Allgemeinen und im Besonderen unter XP
Hallo Luckie,
XP hält meinen Dienst mit dem folgenden Hinweis an: Zitat:
W2k läßt ihn einfach durchlaufen. Den Aufruf von OSVersionEx mag zumindest W2k nicht, XP habe ich gerade nicht vorrätig. Der sieht bei mir so aus:
Delphi-Quellcode:
Sobald ich GetVersionEx auskommentiere no Problem. Der Dienst läuft unterm Systemkonto, Rechte sollten also vorhanden sein.
procedure TCocoControl.ServiceCreate(Sender: TObject);
var os : TOSVERSIONINFO; begin asLastLogOff := TStringList.Create; try os.dwOSVersionInfoSize := SizeOf(os); GetVersionEx(os); if (os.dwMajorVersion >= 5) and (os.dwMinorVersion >=1) then OSXP := TRUE else OSXP := FALSE; except on E: Exception do begin OSXP := TRUE; WriteLog('OSXP.log', E.Message); end; end; end; // procedure ServiceCreate |
Re: Dienste im Allgemeinen und im Besonderen unter XP
Zitat:
Und das:
Delphi-Quellcode:
tut es bei mir in einer normalen Anwendung ganz prima.
procedure TForm1.Button1Click(Sender: TObject);
var os : TOSVERSIONINFO; OSXP : Boolean; begin try os.dwOSVersionInfoSize := SizeOf(os); GetVersionEx(os); if (os.dwMajorVersion >= 5) and (os.dwMinorVersion >= 1) then ShowMessage('XP') else Showmessage('nicht XP'); except on E: Exception do begin ShowMessage(e.Message); end; end; end; |
Re: Dienste im Allgemeinen und im Besonderen unter XP
Delphi-Quellcode:
Bei mir auch, komisch!!! :gruebel:
tut es bei mir in einer normalen Anwendung ganz prima.
Es kommt halt die Meldung das der Dienst nicht gestartet werden kann, der Dienst keine Fehler zurück gibt und entweder ein interner Windows- oder Dienstfehler vorliegt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz