Mam usługę systemu Windows, która musi uruchomić proces wysyłania pliku do drukarki (znalazłem tam rozwiązanie https://stackoverflow.com/a/4875755/1228738). Robię to za pomocą metody Process.Start(). Moim problemem jest to, że nic się nie dzieje.Drukowanie przez wykonanie procesu w usłudze systemu Windows
Usługa jest faktycznie zainstalowana na moim komputerze programisty (win7, x64). Próbowałem zainstalować go jako LOCAL SYSTEM, NETWORK SERVICE, LOCAL SERVICE z tym samym wynikiem za każdym razem.
Próbowałem te drogę zaczynając mój proces:
Process p = new Process();
p.StartInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
p.StartInfo.Arguments = "-p myFile.pdf";
p.Start();
i
Process.Start("C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe", "-p myFile.pdf");
a także
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
startInfo.Arguments = "-p myFile.pdf";
Process.Start(startInfo);
Kiedy I wykonanie tego samego kodu w aplikacji winform, wszystko działa W porządku, plik jest wysyłany do drukarki. Ale w usłudze Windows nic się nie dzieje.
Widziałem ten post https://stackoverflow.com/a/6271309/1228738, co wyjaśnia, dlaczego nie widzę interfejsu użytkownika, to dobrze, nie mam żadnego interfejsu użytkownika. Ale jak wspomniano w sekcji komentarzy, proces bez wkładu użytkownika powinien być w porządku. Rozpoczęty proces nie wymaga wprowadzania danych przez użytkownika.
Jedyne, co mogę teraz powiedzieć, to to, że z powodu izolacji sesji (https://stackoverflow.com/a/5063750/1228738), usługa nie może znaleźć żadnych zainstalowanych drukarek ... Czy tak jest w tym przypadku? Jeśli tak, to jakąkolwiek sugestię, jak to obejść? A jeśli nie, masz pojęcie, co jest nie tak?
Dzięki!
EDIT # 1
próbowałem uruchomiona usługa z kontem użytkownika, a to działa, więc myślę, że moje obawy są potwierdzone ... użytkownicy lokalnego systemu i usług sieciowych nie ma zainstalowanych drukarek.
Więc dopracuję moje pytanie. Czy istnieje sposób, aby te konta miały dostęp do drukarek zainstalowanych na komputerze?
EDIT # 2
W końcu zdecydował, że użytkownik będzie tworzone za prowadzenie tej usługi oraz tym, że konta użytkowników będziemy zainstalować drukarkę, na której można wydrukować.
Domyślam się, że to pytanie może być teraz zamknięte. Dziękuję wszystkim za pomoc.
Może to być spowodowane tym, że aplikacja próbuje wyświetlić okno dialogowe drukowania, ale sesja jest nieinteraktywna (sprawdź dziennik zdarzeń aplikacji) lub może być, jak sugerujesz, ponieważ użytkownik, z którego usługa działa, nie ma żadnych drukarek skonfigurowany. Możesz zalogować się jako użytkownik, dla którego usługa działa (jeśli to możliwe) i skonfigurować drukarki. –
Kiedy robię dokładnie ten sam kod w aplikacji WinForm, plik jest wysyłany do drukarki bez okna dialogowego drukowania, więc oczekiwałbym takiego samego zachowania z usługi. Spróbuję czegoś podobnego do tego, co sugerujesz, i uruchom usługę przy użyciu mojego konta użytkownika i sprawdź, czy działa w ten sposób. Dzięki – Fid
również, gdzie znajduje się myFile.pdf? Czy usługa ma dostęp do tej ścieżki? – roymustang86