2012-02-28 19 views
8

ファイルをプリンタに送信するプロセスを開始する必要があるWindowsサービスがあります(その解決策が見つかりました。https://stackoverflow.com/a/4875755/1228738)。私はProcess.Start()を使ってこれを行います。 私の問題は何も起こらないということです。Windowsサービスでプロセスを実行して印刷する

サービスは実際に私の開発マシン(win7、x64)にインストールされています。毎回同じ結果を出してLOCAL SYSTEM、NETWORK SERVICE、LOCAL SERVICEとしてインストールしようとしました。

は、私は私のプロセスを開始するこれらの方法を試してみました:

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(); 

Process.Start("C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe", "-p myFile.pdf"); 

とも

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); 

私はWinフォームアプリケーションで同じコードを実行し、すべての作品ファイルがプリンタに送信されます。しかし、Windowsサービスでは何も起こりません。

私は投稿https://stackoverflow.com/a/6271309/1228738を見ました。これはなぜUIが表示されないのかを説明していますが、とにかくUIはありません。しかし、コメントのセクションで述べたように、ユーザー入力のないプロセスはOKでなければなりません。私が始めたプロセスは、ユーザー入力を必要としません。

セッションアイソレーション(https://stackoverflow.com/a/5063750/1228738)のために、サービスはインストールされているプリンタを見つけることができません。それは可能でしょうか?もしそうなら、それを回避する方法はありますか?そうでない場合は、何が間違っているのか考えてみてください。

ありがとうございます!私は自分のユーザーアカウントでサービスを実行してみました、それが働いているので、私は私の恐怖が確認されていると思います

EDIT#1

...ユーザーローカルシステムとネットワークサービスが一切インストールされたプリンタを持っていません。

私は少し質問を洗練します。それらのアカウントがコンピュータにインストールされているプリンタにアクセスする方法はありますか?我々は最終的に、ユーザーがそのサービスを実行するために、我々は印刷するにプリンタをインストールします、そのユーザーのアカウントに作成されることが決定

EDIT#2

私はこの質問を今閉じられると思います。 ご協力いただきありがとうございます。

+0

アプリケーションが印刷ダイアログを表示しようとしていますが、セッションが非対話型である(アプリケーションイベントログを確認している)場合や、サービスが実行されているユーザーにプリンタがないため設定されます。サービスが(可能であれば)実行され、プリンタを設定するユーザとしてログインすることができます。 –

+0

winformアプリケーションで全く同じコードを実行すると、ファイルは印刷ダイアログなしでプリンタに送信されるので、サービスから同じ動作が期待されます。あなたの提案に似たものを試してみて、自分のユーザーアカウントでサービスを実行し、それがそのように機能しているかどうかを確認します。ありがとう – Fid

+0

また、myFile.pdfはどこにありますか?サービスはそのパスにアクセスできますか? – roymustang86

答えて

0

は、このMSDNのページをチェックアウト:http://support.microsoft.com/kb/324565

このページによると、あなたは、.NETを使用してASP.NETページまたはWindowsサービスから印刷することはできません。

+2

リンクありがとうございますが、私の状況には当てはまらないと思います。私は、印刷のために.NET Framework Printingクラスを使用していません。私はドキュメントを印刷するように指示する引数を取る.exeを始めています。 – Fid

0

ここソリューションは、カントー、ローカルプリンタを共有し、

-/t yourfile.pdf \\localhost\YourSharedPrinter

あなたのサービスがのUserProfileなしDefaultPrinterを必要としません。そのようにしてFoxitのを呼び出しています。

3

私もこの問題を持っていた、このトリックは、サービスに

進み、それを解決--->ダブル必要なサービスをクリック--->

サプライログインから資格情報]タブをログオンに進みますプリンタがインストールされました。

サービスを実行し、プリンタキューを確認します。

理由:ローカルシステムアカウントにこれらのプリンタがインストールされていません!

以下のスクリーンショットを参照してください。 enter image description here

関連する問題