3

Visual Studio 2010 を使用して C# の Windows サービスから印刷したいと考えています。

印刷ダイアログなしで Windows サービスから HTML ドキュメントを印刷する

私が現在経験している問題は 2 つあります。これは、サービスがデスクトップとやり取りできるようにすることによってのみ発見されました。

1) URL が HTML の場所として入力されると、その場所の資格情報が要求されます (情報にアクセスするためのユーザー名とパスワードを要求する、私が変更することのできないネットワーク共有 IIS Web サーバー) )。

2) 資格情報を入力すると、SetDefaultPrinter に対して何を行っても、既定のプリンターは常に XPS プリンターになります (2 つの異なる方法でこれを行うことがわかりました)。これは、印刷先のプリンターがネットワーク プリンターでもあり、ローカル システム アカウントが (明らかに) アクセスできないことが原因であることがわかりました。この問題を回避する方法は見つかりませんでした。

プログラムで必要な資格情報を入力し (これはネットワーク共有資格情報セットです)、ネットワーク プリンターに印刷することで、これらの問題の両方を回避したいと考えています。他のデスクトップ アプリケーションでは、ネットワーク プリンタをインストールしていなくても、これらのネットワーク プリンタのそれぞれに正常に印刷できました。

Local System アカウントの代わりに資格情報を使用してログインしようとしても、どちらの問題も解決しません。Windows XP を使用しています。

これが機能すると仮定すると、別のサーバーにもサービスをインストールする必要があるため、各プリンターをプレインストールする必要がある場合は、ローカル システム アカウントがプリンターにアクセスできるようにするための手順を知る必要があります。インストール先のサーバーは、おそらく Windows Server 2003 または 2008 ですが、開発マシンと同じネットワーク アクセスを使用します。

編集:他のアカウントとしてログオンする解決策を試みましたが、そのすべてに資格情報が必要です (実際、デスクトップとの対話を使用してローカル システムとして実行されているときにそれらの資格情報が入力された場合、それらの資格情報は受け入れられます)。これを試みた各ユーザーは、テスト印刷しようとしているプリンターにデフォルトのプリンターを設定しましたが、印刷は行われません。XPSプリンターを使用しようとしていることが確実にわかっているのは、デスクトップと対話するローカルシステムとしてログオンしている場合だけです。

4

2 に答える 2

2

サービスをローカル システムとして実行しないでください。ネットワーク リソースにアクセスするために必要な権限がありません。ユーザーを作成し、その下でサービスを実行します。ドメインにいる場合は、ローカル ユーザーではなくドメイン ユーザーであることを確認してください。そのユーザーとしてログオンし、サービスが実行されているコンピューターに使用するプリンターをインストールする必要があります。また、IIS アプリケーションが Windows 認証を使用している場合は、サービスを実行しているアカウントに Web アプリケーションへのアクセス許可を付与できるかどうかを確認してください。

于 2012-04-24T17:01:59.410 に答える