web-dev-qa-db-ja.com

システムのデフォルトのプリンターフォームを削除するにはどうすればよいですか?

Windowsには、[プリントサーバーのプロパティ]ダイアログから削除できないシステムデフォルトのプリンタフォームがあります。それらを削除できる他の方法はありますか? Envelope、B5(JIS)、US Std Fanfoldなどのようなページサイズを使用することは決してありません。ユーザー(および私自身!)がノイズの大きな長いリストをスクロールする必要がないようにしたいと思います。

Print server properties box has a unusable delete button

違いがあれば、当社のプリントサーバーはWindows Server2003です。

12
matt wilkie

私の最初の考えは、これがWindows APIを使用して達成できるかどうかを確認することでしたが、Win32 Printer Forms APIに関する this Webサイトによると、プログラムでシステムフォームを削除することさえできません。

組み込みフォームでDeleteForm()を実行することはできません。ERROR_INVALID_PARAMETERで失敗します。

私の2番目の考えは、US Std Fanfoldなどの比較的一意のフォーム名を見つけて、レジストリ全体を検索することでした。驚いたことに、エントリーはかなりの数の場所で収穫されます。したがって、私の提案は、空白の32ビットマシン(シャドウキーとの混同を避けるために32ビット)を構築し、それらのキーのいくつかで町に行くことです。それが機能するようになれば、これを行う必要がある場所に簡単に転置できるはずです。

ただし、Microsoftが明らかにこれを望まないことを考えると、サポートと互換性の問題に自分自身を開放していると言わなければなりません。

5
Dan

標準の用紙はプリンタードライバーの一部であり、対応するファイルから手動でのみ削除できます。

これが私がそれを行うことができた方法のガイドです:

1.管理者としてCMDを開きます。

2.「printui/s/t2」と入力します(引用符は含みません)。

3.開いたウィンドウで、用紙フォームを削除するプリンターを選択し、下部にある[プロパティ]をクリックします。

4.エクスプローラーで指定されたパス(おそらくC:\ Windows\System32\pool\drivers\x64\3)の下にリストされているファイルを探します。

5.これらすべてのファイルのバックアップコピーを作成します(デスクトップ上のフォルダーなど)

6.元のファイルをそれぞれエディターで開きます(一度に1つずつ)。読み取り可能なコードが含まれている場合は、Ctrl + F(検索を開く)を押して、削除する必要のある、より目立つ名前の紙のフォームの1つを入力します(例:はがき、法務、手紙など)。検索された単語が見つからない場合は、保存せずにファイルを閉じて、次のファイルを試してください。 (私の場合、物理プリンターの場合は拡張子「.gpd」と「.inx」、PDF-Creatorの場合は「.PPD」のファイルでそれらを見つけました)

7.エントリが見つかった場合:すべての紙のフォームにコードブロックがリストされた段落があるはずです。いくつかの例:

    [JAPANESE_POSTCARD]
    MediaType=8.1055
    InputBin=7

または

    *Option: JAPANESE_POSTCARD_90x90x50x95
    {
        *Name: ""
    }

または

    *Option: JAPANESE_POSTCARD
    {
        *rcNameID: =RCID_DMPAPER_SYSTEM_NAME
        *Constraints: LIST(Duplex.VERTICAL, Duplex.HORIZONTAL)
        *Constraints: InputBin.4
        *PageDimensions: PAIR(4724, 6992)
        *PrintableArea: PAIR(4412, 6680)
        *PrintableOrigin: PAIR(156, 156)
        *switch: Orientation
        {
            *case: PORTRAIT
            {
                *CursorOrigin: PAIR(156, 156)
            }
            *case: LANDSCAPE_CC270
            {
                *CursorOrigin: PAIR(4568, 156)
            }
        }
        *Command: CmdSelect
        {
            *CallbackID: 0x00470002
            *Order: DOC_SETUP.2
        }
        *Command: CmdSelect
        {
            *CallbackID: 0x00470002
            *Order: PAGE_SETUP.2
        }
    }

すべての不要な紙のフォームのそのようなブロックをすべて削除します。同様のブロックを含む段落が複数ある可能性が高いため、ファイルを検索し続け、何も見つからなくなるまで繰り返します。次に、ファイルを保存して閉じます。

8.すべてのファイルが変更されたら、ドキュメント(Word、Excelなど)を開き、不要な用紙がそのプリンターの印刷プロパティにまだリストされているかどうかを確認します。

-まだ存在する場合:ステップ6に戻り、次のファイルを検索します。

-そうでない場合:おめでとうございます! (不要なフォームを削除するプリンターが他にもある場合は、手順3に戻ります)。

-問題がある場合:最後に編集したファイルをバックアップで上書きします。 (間違いを犯した可能性があるので、もう一度やり直してください)

お役に立てれば。乾杯!

2
Stallnig

プリントサーバー自体では、フォームはレジストリにあります。

HKLM\System\CurrentControlSet\Control\Print\Forms

(注:ここから自分でフォームを削除したことはないので、結果を削除してテストする前に、まずキーのバックアップを作成します)。

1
TheCleaner

「印刷管理」プロセス(printmanagement.msc)を開始します。

[プリントサーバー/フォーム]で、プリンタフォームを削除できますが、組み込みフォームは削除できません。

組み込みフォームを削除する方法をまだ見つけていません。ドロップダウンに「ノイズ」がすべて表示されるのは好きではありません。

1
BlakBat