none
prnqctl.vbs を使用して、テスト印刷を行いたいのですが出来ません。 RRS feed

  • 質問

  • どなたかご教授下さい。

    prnqctl.vbs を使用して、テスト印刷を行いたいのですが出来ません。

    1.
     管理者権限のあるユーザ名でログインした。

    2.
     ユーザーアカウント制御(UAC)の解除を行った。

    3.
     管理者権限でコマンドプロンプトを起動した。

    4.
     コマンドプロンプト上でprnqctl.vbs の存在するフォルダに移動。

    上記の4つを行った後に、以下のコマンドでテスト印刷しますが、失敗します。

      Cscript prnqctl.vbs -e -p プリンター名

    コマンドプロンプト上に表示されるメッセージは、

      失敗 テスト ページの印刷 Win32 エラー コード 5

    です。
    エラーコードから、アクセス拒否をされているようです。

    実行させたPCの環境は、

    OS:Windows7 Professional(64ビット) Service Pack1

    です。

    ちなみに、Windows xp Professional では、prnqctl.vbsを使用してテスト印刷できました。

    Windows7では、何かアクセス絡みの事前準備が必要でしょうか?

    よろしくお願いします。

    2014年8月20日 1:12

回答

  • ご返信、ありがとうございます。

    急ぎだったので
    prnqctl.vbs を使用しない違う方法でテストページ印刷させるようにしました。
    具体的には、以下の方法です。

    rundll32.exe PrintUI.dll, PrintUIEntry /k /n プリンター名

    以上でこの質問は締めさせて頂きます。

    • 回答としてマーク sedateKM 2014年8月26日 6:36
    2014年8月26日 6:36

すべての返信

  •  回答ではありません。

     むやみやたらと UAC を解除するのはやめましょう。
     UAC を解除したのは、「失敗 テスト ページの印刷 Win32 エラー コード 5」が返ってきたから、でしょうか?実行したことは、時系列に並べて書かないと、本当の問題を隠してしまうことがあります。

     プリンタ フォルダーで対象のプリンターを右クリックしてプロパティを表示し、「セキュリティ」タブを表示します。印刷を行いたいユーザー、またはそのユーザーが所属するグループに、「印刷」の許可があるでしょうか。
     なければ、与えてください。それで印刷できるようになったら、「なぜ、対象のプリンタに、ユーザが印刷を行う権限がないのか」というのが本当の問題のはずです。この状況が、「プログラムを実行させる環境で発生するのか」ということが、解決しなければならない問題です。


    Jitta@わんくま同盟

    2014年8月21日 13:36
  • ご返信、ありがとうございます。

    仰る通り、UACを解除したのは、「失敗 テスト ページの印刷 Win32 エラー コード 5」が返ってきたからです。

    印刷を行いたいユーザーに印刷の許可はあります。
    プリンターのプロパティから「テストページの印刷」ボタンクリックによるテスト印刷は出来ます。
    コマンドプロンプト上での
     Cscript prnqctl.vbs -e -p プリンター名
    が出来ません。

    2014年8月22日 8:16
  •  あなたが行ったことを、時間順に、不足無く書き出してください。

     とりあえず、私のところ(Windows 7 SP1, x64, Administrators, グループ 管理者として起動したコマンド プロンプト)で、"Microsoft XPS Document Writer" を対象に実行したところ、エラーは出ませんが、プロンプトが返ってきませんでした。[Ctrl]+[C] は効いたので、ハングしていたわけではなさそうです。
     UI から実行すると、保存先を問い合わせるダイアログが出てきました。しかし、コマンド プロンプトからでは表示されないので、このダイアログを表示する命令が、実行したユーザー以外で動作していると考えられます。

     というわけで、「他の OS」でやったのですから、「他のプリンター」はどうか、確認してみてください。それもダメなら、あなたが行った事を、その環境と共に、OS インストール直後から、時間順に、不足無く書き出してみてください。【以下追加】スクリプトの中を見ると、WMI で W32_Printer クラスを作成して呼び出す、ということに色々付け加えていました。最低限のコードに編集して、何がエラーを出しているのかなどを調べる事はできると思います。

     プリンターは、ローカル ポートにつながっているのでしょうか。それとも、ネットワーク上の他のホストが公開するプリンターでしょうか。後者であれば、WMI で実行していますから、ホスト コンピュータで実行しなければならないような気がします。


    Jitta@わんくま同盟


    • 編集済み Jitta 2014年8月24日 5:06 後半追加
    2014年8月23日 13:44
  • ご返信、ありがとうございます。

    急ぎだったので
    prnqctl.vbs を使用しない違う方法でテストページ印刷させるようにしました。
    具体的には、以下の方法です。

    rundll32.exe PrintUI.dll, PrintUIEntry /k /n プリンター名

    以上でこの質問は締めさせて頂きます。

    • 回答としてマーク sedateKM 2014年8月26日 6:36
    2014年8月26日 6:36