
問題
Windows Server 2003 のサポートは 7 月 14 日に終了するため、スケジュールされたすべてのタスクを Windows 2008 R2 サーバーに移行しています。
当社では、ユーザーや顧客とシステムとのやり取りを補完するさまざまなバックエンド プロセスを処理するために、Microsoft (MS) Access 2003 (mdb) データベースを使用しています。
この質問の原因となっている MS Access 内のバックエンド プロセスの 1 つは、ユーザーがログインしていない場合に印刷を拒否します。
バックエンド プロセスは一時テーブルにデータを入力します。このテーブルは後で、印刷するレポートにデータを入力するために使用されます。このレポートには、埋め込まれたクエリ、リンクされた画像、および保存された既定のプリンターがあります。
スケジュールされたタスクを実行しているユーザーはドメイン ユーザーです。
私たちが推測するところ
セッション 0 隔離- Access には、現在 N ページ中 X ページ目であることを示す非常に小さな印刷ウィンドウが表示されます。このウィンドウは操作できません。これが原因である可能性があると感じていますが、これまで試したすべての方法では、この現象を止めることができませんでした。
私たちが試したこと
- システムプロファイルの下にデスクトップフォルダを作成しました
- ユーザーが昇格された権限を持つローカル管理者であることを確認しました
- ログイン中に手動で実行する(これで動作します)
- 印刷ジョブの小さなサンプルを実行するアプリケーションのミニチュア バージョンを作成します。
- ユーザーがログインしているかどうかに関係なく、スケジュールされたタスクを実行するように設定します。 いずれにしても、MS Access データベース内の他のプロセスは引き続き実行され、印刷されていないプロセスについては空のレポートが表示されます。
現在の回避策
ドメインユーザーはログインしたままにしています。
答え1
この問題は、セッション プリンターに印刷する場合に簡単に発生する可能性があります。
HKEY_Current_User\Printers\Connections (セッション プリンター)
対
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers (ローカル プリンター)
ネットワーク共有経由でインストールされたプリンタはすべてこのカテゴリに該当します。ローカル TCP/IP キューを使用してインストールされたプリンタでもう一度お試しください。そのプリンタはシステム全体で使用可能になります。
答え2
Elias さん、スケジュールされたタスクを確認して、「ユーザーがログオンしているかどうかに関係なく実行する」というボックスをチェックしましたか? 問題は、チェックされていないため、タスクを実行しようとしても実行できないということのようです。
答え3
プロセスの実行中にプリンタ自体が検出されないようです。ファイルに出力するためのデバッグ コードを追加して、どこで問題が発生しているか確認してみましたか? VBA でハングするプロセスはイベント ビューアーに多くの情報を生成せず、通常はコード内でより多くのエラー キャッチが必要であることがわかりました。
セッション 0 の分離の問題は見たことがあり、回避策もありますが、私が遭遇した例はすべて Excel に関連するものでした。
セッション 0 によって影響を受けるものについて説明します。
答え4
UACを最低設定にすると、状況は改善しますか? これを行うには、[スタート]、[実行]の順にクリックします。実行ボックス/プロンプトに「msconfig」と入力して[OK]をクリックします。[ツール]タブをクリックします。[UAC設定の変更]をクリックし、[起動]をクリックします。スライダーを一番下までドラッグします。[OK]をクリックしてWindowsを再起動し、サーバーを再起動します。
タスクを移行したときに、タスクを再作成しましたか? 2003 と 2008 の間でタスクを移行する優れた方法は、2008 でタスク スケジューラを開き、2003 サーバーに接続してタスクをエクスポートすることです。その後、タスク スケジューラを 2008 サーバーにポイントし直して、タスクをインポートできます。タスクが 0x0 の結果で実行されている場合、問題はスケジュールされたタスク自体の外部にあると言えます。
テスト ページを送信したときにプリンターが印刷されることを確認できますか? まだ行っていない場合は、古いサーバーと新しいサーバーのプリンターの設定を比較してみることをお勧めします。