Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TService - Druckerproblem! (https://www.delphipraxis.net/12374-tservice-druckerproblem.html)

Killi138 26. Nov 2003 09:36


TService - Druckerproblem!
 
Hi!

Habe eine ServiceApplication, die auf D:\ eine andere Anwendung aufruft - diese MUSS folgende Sachen haben: Webcamtreiber, Münzprüfertreiber und einen DRUCKER
Wenn ich den Service nun installiere, steigt es beim nä. Neustart mit "Unbekannter Softwarefehler" und "no printer selected" aus...liegt es nur am Drucker, dass er vor der Benutzeranmeldung keinen Drucker hat oder auch an Treibern für den Rest? Wie kann ich mein Problem lösen???

negaH 26. Nov 2003 11:37

Re: TService - Druckerproblem!
 
Gehe in Systemsteuerung/Verwaltung/Dienste, öffne Eigenschaften deines Dienstes und setze auf der Seite "Anmelden" - "Dieses Konto" auf ein lokales Adminstrator Konto. In diesem Moment wird dein Dienst mit diesem Zugriffsrechten versehen, und kann auch auf die lokalen Drucker Resourcen zugreifen. In deinem TService gibts dafür auch im OI einstellbare Werte. Oder in deinem Dienst müsstest du mit LogOnUser & ImpersonateUser arbeiten, damit dein Dienst die entsprechenden Zugriffrechte hat. Dienste haben i.R. weniger Zugriffsrechte um auf lokale Resourcen zugreifen zu können.

Gruß hagen

Killi138 26. Nov 2003 12:35

Re: TService - Druckerproblem!
 
Welche Werte im OI muss ich denn ändern dass das klappt? ServiceType, oder...? Habe Delphi 6...

negaH 26. Nov 2003 12:39

Re: TService - Druckerproblem!
 
Probier das erstmal mit den Diensten in der Computerverwaltung aus. Falls das nämlich nicht zum Erfolg führt kann auch die Einstellungen beim TService im OI nichts bringen.

Zb.

Service.ServiceStartName := 'Administrator';
Service.Passwort := 'Kennwort';

D.h. man gibt den Account ein.

Gruß Hagen

Killi138 26. Nov 2003 12:51

Re: TService - Druckerproblem!
 
habs jetzt probiert mit Account eingeben, er bringt mir"Kontenname nicht vorhanden oder pw falsch" - das stimmt nicht, so hab ich mich doch angemeldet....werde noch das andere probieren...

Killi138 26. Nov 2003 13:01

Re: TService - Druckerproblem!
 
Jetzt sitz ich in der Zwickmühle - dein Tip, den Dienst mit Administrator auszuführen führt zu folgendem: nichts passiert, Disco.exe läuft, aber ich sehe nix! (Also wohl wieder interactive auf False, oder?)
Das von Hand eintragen bringts nicht, da er rummeckert dieses Konto gäbe es nicht...
und ohne alles eben Programmabsturz!

negaH 26. Nov 2003 13:17

Re: TService - Druckerproblem!
 
Bei der Konto-Auswahl hast due mit "Durchsuchen" gearbeitet ??
Falls ja so solltest du gesehen haben das der Kontoname für "Administrator" so aussieht -> ".\Administrator".

Bei mir funktioniert das alles.

Gruß Hagen

Killi138 26. Nov 2003 13:32

Re: TService - Druckerproblem!
 
Das hat er automatisch gemacht! So gehts auch direkt im Service es reinzuschreiben, aber wie man da sieht ändert sich dann automatisch das INTERACTIVE auf FALSE, und so sehe ich mein externes Programm mit dem Form nicht!!!

negaH 26. Nov 2003 13:37

Re: TService - Druckerproblem!
 
Wieso ? vorher Interactive = True, dies beleibt dann erhalten, da ein Dienst angemeldet auf einem anderen Konto immer interaktiv ist. (soviel ich weiß, am besten mal Assarbad fragen der kennt sich da besser aus)

Gruß Hagen

Killi138 26. Nov 2003 13:39

Re: TService - Druckerproblem!
 
ja, aber alles vrehält sich so, als wäre es nicht inactive! Mein Programm läuft (ohne Probleme) allerdings nur im TaskManager - ich seh es nicht, liegts an wsMaximized? Auf jeden Fall seh ich NIX....das is ja das Problem!

negaH 26. Nov 2003 13:41

Re: TService - Druckerproblem!
 
Eine Bemerkung noch: einen Service zu schreiben der Interaktiv ist, ist im grunde schwachsinnig. Interaktive Services unterwandern den eigentlichen Sinn von Services und somit auch die Sicherheit. Sie sind im Grunde schlimmer, eg. unsicherer, als normale Anwendungen.

Einen interaktiven Service kannste auch als normale Anwendung programmieren, und dies wäre dann vom Sicherheitskonzept sinnvoller und erspart dir viel Arbeit.
Normalerweise sollte ein Service nicht interaktiv sein, und falls notwendig wird eine zweite Anwendung installiert die dann die Informationen zum Service anzeigen und ändern kann.

Gruß Hagen

Killi138 26. Nov 2003 13:43

Re: TService - Druckerproblem!
 
brauch aber ne gute Lösung um ein externes Programm VOR allem anderen zu starten - dass man nicht auf die TaskBar kommt...

negaH 26. Nov 2003 13:46

Re: TService - Druckerproblem!
 
Dein TForm sollte in TService.OnExecute() erzeugt und auch wieder freigegeben werden. Bedenke in Serives ist alles Thread-basiert.

Gruß Hagen

Killi138 26. Nov 2003 13:48

Re: TService - Druckerproblem!
 
das ist bisher so:

Code:
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var
  ProcID: PCardinal;
begin
RunProcess(ExtractFilePath(ParamStr(0)) + 'Disco.exe', SW_MINIMIZE, TRUE, ProcID);

end;

function TService1.RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PCardinal): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb         := SizeOf(StartupInfo);
  StartupInfo.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    if wait = FALSE then
    begin
      if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
      exit;
    end;
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess, Result);
  end;
  if ProcessInfo.hProcess <> 0 then
    CloseHandle(ProcessInfo.hProcess);
  if ProcessInfo.hThread <> 0 then
    CloseHandle(ProcessInfo.hThread);
end;

dai ich ja kein form anzeigen will, sondern ein Programm starte...

Killi138 26. Nov 2003 15:00

Re: TService - Druckerproblem!
 
weiß keiner woran es liegen könnte?

Killi138 26. Nov 2003 15:02

Re: TService - Druckerproblem!
 
weiß keiner woran es liegen könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz