1

印刷に問題があります。Visual Studio 内で実行すると完璧に動作するプログラムを作成しました。Print、PageSettings、および pagePreview を呼び出すボタンは、すべて問題なく実行されます。しかし、Release Folder から (Built Release の後) プログラムを実行してボタンをクリックすると、間違ったメッセージが表示されます: Unhandled exception has occured in your application. 続行をクリックすると...など...

例外テキスト

System.Drawing.Printing.InvalidPrinterException: No printers are installed.

プリンターがインストールされていないと書かれていますが、そうではありません。そして、なぜVSで動作するのですか?

さて、printPreviewDialog と printDialog を呼び出す小さなプログラムを作成しました。印刷はprintDocumentによって行われています。だから、私は2つのボタンを持つフォームを持っています。

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawString("Hello World", new Font("Times New Roman", 16, FontStyle.Bold), Brushes.Black, 10, 10);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        printPreviewDialog1.Document = printDocument1;
        printPreviewDialog1.ShowDialog();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        printDialog1.Document = printDocument1;
        printDialog1.ShowDialog();
    }

このコードを VS で実行すると、すべて問題なく動作しますが、Release または Debug フォルダーから実行すると、プログラムから例外が返されます: プリンターがインストールされていません。すでに 2 台のコンピューターと 1 台の仮想マシンを試しましたが、例外を除いてどこでも同じ結果が得られました。

4

1 に答える 1

0

ASP.NET アプリケーションをデバッグするには、ASP.NET Web サーバーが実行されているマシンの管理者であるか、ユーザー アカウントで ASP.NET ワーカー プロセスが実行されている場合は、名前が Debugger Users グループに含まれている必要があります。ASP.NET アプリケーションはデフォルトで NetworkService 資格情報として実行されますが、

また、プリンターは通常、ユーザーのプロファイルにインストールされます (特に、USB やパラレル ケーブルなどの物理的に接続されたプリンターではなく、ネットワーク プリンターの場合)。管理者としてログインしたときに表示される内容は、他のユーザーが同じマシンにログインしているときに利用できるとは限りません。ASP.NET アプリケーションは NetworkService として実行されるため、Web アプリケーションがそこでプリンターを認識することはほとんどありません。

そのため、.NET アプリケーション プールを実行するためのアカウントを作成し、そのユーザーがプリンターに接続するか、プリンターを追加するためのアクセス許可を提供します。

Windows アプリケーションまたは通常の .Net アプリケーションの場合、Visual Studio で実行すると管理者権限で実行されますが、実行可能ファイルをインストールしてプリンターにアクセスしようとすると、このアプリケーションを実行しているユーザー アカウントに権限がない可能性があるため、このエラーが発生する場合があります。そのプリンターに対する権利

したがって、これらの言及されたすべてのポイントを段階的に確認することをお勧めします

.Net スタンドアロン アプリケーション

  1. デフォルトのプリンターが設定されていることを確認してください。
  2. デフォルトのプリンターまたはコードを介して使用する他のプリンターであるかどうかを確認します。現在ログインしているユーザーがアクセスできるように、必要な権限が必要です。これを行うには、[プリンターの設定] -> [プリンターを選択] -> 右クリックして [プリンターのプロパティ] を開きます。[セキュリティ] タブで、アプリケーションを実行している現在ログインしているユーザーがそのプリンターにアクセスする権限を持っているかどうかを確認します。
  3. それでも機能しない場合は、ユーザー「Everyone」に権限を付与してみてください。それはうまくいくはずです。この場合、インストール後に何がうまくいかないのかを簡単に理解できるかもしれません。

ASP.NET アプリケーション

  1. この場合、最初に明確にする必要があるのは、コードがローカル マシンではなくサーバー上で実行されることです。ASP.NET を介してユーザーのマシンで印刷を制御することはできません。そのため、プリンターがサーバーにインストールされていて、プリンターの 1 つがデフォルト プリンターとしてマークされているかどうかを確認してください。コードをローカル環境でデバッグ モードで実行する場合、マシンにプリンターがインストールされている可能性がありますが、他のサーバーでアプリケーションをホストしている場合、そのサーバーにはプリンターがインストールされていません。
  2. その場合は、プリンターを通常使うプリンターとして設定してみてください
  3. これを行うには、[プリンターの設定] -> [プリンターを選択] -> 右クリックして [プリンターのプロパティ] を開きます。セキュリティ タブで、ユーザー「ネットワーク サービス」がこのプリンタを介して印刷するためのアクセス権を持っているかどうかを確認します。そうでない場合は、「ネットワーク サービス」に関連する権限を与えます。

これらのチェックを行ってください。説明が明確であり、必要なサポートを提供できることを願っています。

于 2013-07-30T14:05:28.387 に答える