@rollstuhlfahrer: Das versucht er ja ... Also, er versucht über printto das Standardprogramm für PDFs zu starten und dieses soll dann drucken.
Ich vermute einfach mal, daß eventuell sogar der Druckertreiber vorhanden ist, aber im Systemkonto sind andere Registry-Pfade verlinkt
und da werden wohl einfach keine Verlinkungen für *.PDF eingetragen sein.
Sowas läßt sich übrigens rausfinden, indem man mal die Rückgabewerte (Result) von
ShellExecute prüft.
Das war etwas anders gemeint. Mit "externes Programm" meinte ich einen Einzeiler:
Delphi-Quellcode:
programm TestApp;
uses
Windows, ShellAPI;
begin
if ParamCount <> 3 then Exit; // Alternativ eine Warnung ausgeben!
ExitCode := ShellExecute(0, PChar(ParamStr(1)), PChar(ParamStr(2)), PChar(ParamStr(3)), nil, SW_SHOW);
end;
und das dann Aufrufen mit
Code:
TestApp.exe "printto" "Dokument" "printerInfo"
.
Aus dem ExitCode bekommt man immerhin mit, ob ein Fehler vorlag, leider nicht, welcher.
Den Thread, in dem gezeigt wird, wie das geht, um aus einem Dienst ein Programm im Benutzerkontext zu starten ist übrigens
der hier (mit Admin-Rechten) (ohne LinkedToken hat der Kind-Prozess keine Admin-Rechte), alternativ kannst du dir das auch selbst bauen (
Bauanleitung).
Bernhard