Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 07.08.12 11:10 
Hallo liebe Delphi-Helfer :)

ich habe jetzt viele Forenbeiträge zu dem Thema gelesen und komme trotzdem kein Schritt weiter.
Ich habe Delphi5 und mein Programm soll eine sehr wichtige Aktion (Datenbank-BackUp) machen.

Allerdings muss das Programm wohl als Dienst laufen, damit nicht unbedingt ein User angemeldet sein muss, sondern der PC einfach nur an sein muss, damit er das machen kann.
Ist der PC aktuell im User-Konto-Auswahl-Fenster, startet das Programm zumindest nichts...

Wie bringe ich nun meinem Programm bei als Dienst zu laufen?
Von Datenmodulen habe ich keine Ahnung, daher brauch ich jeden Schritt...

Danke für die Mühen :lol:


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Di 07.08.2012 um 11:14
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 07.08.12 11:17 
Moin!

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings muss das Programm wohl als Dienst laufen, damit nicht unbedingt ein User angemeldet sein muss, sondern der PC einfach nur an sein muss, damit er das machen kann.
In diesem Fall reicht doch schon ein Taskplaner-Job, da kannst du auch einen User hinterlegen, der für den Job angemeldet werden soll. :idea:

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Wie bringe ich nun meinem Programm bei als Dienst zu laufen?
Von Datenmodulen habe ich keine Ahnung, daher brauch ich jeden Schritt...
Naja, man kann einem "normalen" VCL-Programm nicht nachträglich beibringen, als Dienst zu laufen. Dazu musst du dann schon eine Service-Anwendung anlegen und deinen Code da rein verpflanzen. :nixweiss:

Evtl. ist für dich ja auch Suche bei Google SRVANY eine Alternative. :lupe:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 07.08.12 11:17 
www.tolderlund.eu/de.../service/service.htm
www.delphipraxis.net...-win2000-win-xp.html

Wobei hier gegf. auch ein Programm welches im Taskplaner aufgerufen wird langen könnte.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 07.08.12 11:47 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
www.delphipraxis.net...-win2000-win-xp.html


Wir in dem beschrieben, habe ich schon ein Test-Dienst-Programm. Den BeispielCode mit den ShowMessages habe ich, aber wenn ich an die Exe den Parameter Install übergebe, bekomme ich eine Fehlermeldung mit "Zugriff verweigert" und nix passiert :(
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 07.08.12 11:49 
Vista / WIN7 ??

CMD als Administrator ausführen ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 07.08.12 11:53 
Programmieroberfläche ist WinServer 2k8 64Bit.
Wo das Programm laufen soll schwankt zwischen Win2k und Vista.

Und auf dem Testserver habe ich AdminRechte.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 07.08.12 12:43 
user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Und auf dem Testserver habe ich AdminRechte.
Trotzdem musst du die Konsole explizit als Admin starten. ;-)
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 02.04.13 15:41 
Nach langem habe ich mal wieder Zeit mich mit dem Thema Dienste zu befassen und wieder einige Stunden in Foren investiert nur um wieder nichts auf die Reihe zu bekommen.

Nun versuch ich eine ServiceAnwendung zu programmieren.
Aber selbst da scheitern die Foren schon an mir.

Ich brauch eine Anwendung die sich als Dienst ein- und ausschreiben kann und ein TForm starten kann.

Hoffe das Ihr mir den Weg dahin zeigen könnt.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 02.04.13 15:59 
Kommunikation mit dem Desktop ist Diensten seit Vista nicht mehr gestattet. Man kann es zwar schaffen eine Anwendung aus einem Dienst heraus auf dem Desktop aufzurufen www.delphipraxis.net...-wirklich-mal-4.html der Beitrag von Kuba, aber das vorgehen ist nicht ohne zwingenden Grund zu empfehlen.
Was genau soll den Dein Dienst tun, bzw. warum soll er mit der Oberfläche kommunizieren.
Der eigentlich Weg wäre einen Dienst und eine getrennte Anwendung zu haben, die beiden kommunizieren z.b. über Named Pipes, TCP-IP oder was Dir sonst an IPC gefallen mag.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 04.04.13 09:42 
Naja,
das Programm was als Dienst laufen soll hat mehrere Aufgaben.
Darunter Datenbank-Update, Programm-Update, Datenerstellen und versenden ect.

Und all diese Dinge können sowohl automatisch per Timer starten, als auch Manuell vom User angestossen werden.

Aber wenn Dienste ohne Oberfläche laufen müssen, muss ich mein komplettes Programm überdenken.
Und da ich auf der aktuellen Basis schon über ein Jahr baue, wär das verdammt viel Arbeit...

Und als Dienst muss es laufen, weil manche Kunden ungefragt ihren Server neustarten ohne irgendein User anzumelden.
Die automatischen Aktionen müssen dann aber trotzdem laufen...

Wenn es nicht anders geht, würde ich trotzdem gern lernen, wie ich eine ServiceAnwendung baue, da ich trotz Forensuche bereits am Anfang scheitere.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 04.04.13 09:55 
Man muss die Arbeit und die Darstellung der Arbeit trennen. So kann Dein Service die Arbeit machen. Dies dem User mitzuteilen musst Du davon abtrennen.
Bei meinen Diensten wird ne Logdatei geschrieben, die der User anschauen kann. Er kann sich außerdem per TCP mit dem Dienst verbinden und bekommt dann Live die Logmeldungen angezeigt. Das ist nur ein Weg, sowas zu realisieren.

Um einen Dienst zu erzeugen musst Du einfach nur in Delphi eine Serviceanwendung erstellen. Dann kannst Du im "OnExecute" Deine Arbeit verrichten. Du solltest Dich mal in der Hilfe zu den Ereignissen des Services einlesen, dann kommst Du schon einen großen Schritt weiter.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 04.04.13 11:13 
au weia ist das Kompliziert xD mit den ganzen Zeug hab ich noch nie gearbeitet...

Aber wenigstens war mein Dienst schonmal in der Dienstliste, darauf kann ich aufbauen :) danke
drstar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: Do 04.04.13 21:55 
Nun ja, wie meine Vorredner schon sagten, ein Dienst hat auf dem Desktop nichts zu suchen, Thema Nutzerkonten und Adminrechte und noch einiges andere...
Ein möglicher Weg, der auch für Einsteiger machbar sein sollte, wäre zunächst einmal den Dienst zu schreiben, der sich um die Arbeit im Hintergrund kümmert. Eine Desktopanwendung, die sich um die Interaktion mit dem User kümmert, kann dann mit der Serviceanwendung (also dem Dienst) interagieren. Gelöst werden kann das z. B. über ein Verzeichnis, für welches der Dienst logischerweise Schreibzugriff braucht, die Nutzeranwendung zunächst einmal Leserechte. Abhängig davon, ob man eine Nutzerrechteverwaltung berücksichtigen möchte bzw. muß, kamm man einzelnen Nutzern auch Schreibzugriff auf eben dieses Verzeichnis gewähren. Über eine (oder mehrere Dateien) können dann beide Anwendungen Informationen austauschen und ggf. zur Laufzeit konfiguriert werden. Allerdings wäre eine Fehlerbehandlungsroutine für den Dateizugriff dringend zu empfehlen. Insbesondere ist zu vermeiden, daß eine bereits geöffnete Datei durch die jeweils andere Anwendung auch geöffnet wird; es ist daher dringend anzuraten, Dateien nur kurz zu öffnen, einzulesen und anschließend sofort wieder zu schließen, um den weiteren Zugriff nicht zu blockieren.