プリンタが移動プロファイルと共に移動する動作を変更する方法

重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明

概要

仕様では、ユーザーが移動プロファイルを使用している場合、そのユーザーの通常使うプリンタの設定はユーザー プロファイルと共に移動します。しかし、環境によってはこの動作が望ましくない場合もあります。この資料では、この動作を変更する方法について説明します。

詳細

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。


重要 : この資料の内容は、企業内管理者の方を対象としています。この資料で説明している方法を実環境で実行する前にテスト環境で充分にテストすることをお勧めします。


プリンタはユーザーの移動プロファイルと共に移動するように設計されています。これが、通常使うプリンタの情報がレジストリの HKEY_CURRENT_USER ツリーの配下に保存されている理由です。この動作を変更するには、以下のいずれかの方法を実行します。

方法 1

インストール済みのプリンタの通常使うプリンタの設定をエクスポートし、ユーザーのログオン時にその設定をユーザー プロファイルにマージします。

  1. レジストリ エディタ (Regedit.exe) を実行し、次のレジストリ キーをエクスポートします。
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
  2. テキスト エディタを使用して、手順 1. で作成したレジストリ (.reg) ファイルを修正し、キーの下に次の名前のみを残すようにします。
    "Device"=...
    レジストリ ファイルの最終行には空白行が含まれている必要があります。
  3. レジストリ エディタ (Regedit.exe) を実行し、次のレジストリ キーの下に新しい文字列値 ResetPrinter を追加します。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  4. ResetPrinter 値の例を以下に示します。

    REGEDIT.EXE -S path\File.reg
    File.reg は、手順 1 で保存したファイルの場所と名前です。

方法 2

特定の領域内のコンピュータの名前が類似している場合、.vbs スクリプト ファイルを使用してコンピュータ名の中の特定の文字列に対応するプリンタをインストールすることができます。この方法で説明しているサンプル コードは、IF 行を訂正するだけで使用できます。たとえば、コード内の最初の IF 構文は、コンピュータ名に文字列 "LAB1-" が含まれている場合は通常使うプリンタを "\LAB1\LaserJet" に設定することを意味しています。この方法を使用するには、以下の手順を実行します。

  1. 次の VBS サンプル コードを Defaultprinter.vbs などの .vbs ファイルにコピーします。
    Option Explicit
    DIM RegEntry, ComputerName

    RegEntry="HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName"
    ComputerName = ReadRegValue(RegEntry)

    if InStr(1,ucase(ComputerName),"LAB1-",vbTextCompare) > 0 then call SetPrinter("\\LAB1\LaserJet")
    if InStr(1,ucase(ComputerName),"LAB2-",vbTextCompare) > 0 then call SetPrinter("\\LAB2\LaserJet")
    if InStr(1,ucase(ComputerName),"OFFICE-",vbTextCompare) > 0 then call SetPrinter("\\OFFICE\LaserJet")
    'so on and so forth.
    wscript.quit

    ' *** This subroutine installs and sets the default printer
    Sub SetPrinter(ByVal PrinterPath)
    DIM WshNetwork
    Set WshNetwork = CreateObject("WScript.Network")
    WshNetwork.AddWindowsPrinterConnection(PrinterPath)
    WshNetwork.SetDefaultPrinter Printerpath
    end sub

    ' **** This function returns the data in the registry value
    Function ReadRegValue(ByVal RegValue)
    DIM WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    ReadRegValue=""
    On Error Resume Next
    ReadRegValue= WSHShell.RegRead(RegValue)
    End Function
  2. 必要に応じて IF 行を修正します。修正が必要な箇所は二重引用符で囲まれた部分のみです。場合によっては IF 行を新しく追加する必要があります。
  3. レジストリ エディタを使用して、次のレジストリ キーの下に文字列値 ResetPrinter を作成します。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  4. ResetPrinter 値の例を以下に示します。

    WSCRIPT.EXE path\DefaultPrinter.vbs
    path は、Defaultprinter.vbs ファイルの保存先です。

注意事項

Defaultprinter.vbs ファイルは、Run キーではなく、ログオン スクリプトから実行することもできます。この資料で説明している 2 つの方法では、ユーザー プロファイルの通常使うプリンタの設定をリセットします。この資料のサンプル スクリプトを正常に実行できない場合は、下記のマイクロソフト Web サイトから Windows Scripting Host をインストールまたはアップグレードする必要があります。

マイクロソフトは、この情報をプログラミング言語の使用方法の一例として提供するだけであり、市場性および特定目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

プロパティ

文書番号:304767 - 最終更新日: 2005/11/21 - リビジョン: 1

フィードバック