ローミング プロファイルを使用してローミングするプリンターの動作を変更する方法

この記事では、ローミング プロファイルを使用してローミングするプリンターの動作を変更する方法について説明します。

適用対象: Windows 10 - すべてのエディション
元の KB 番号: 304767

重要

この記事には、レジストリの変更に関する情報が含まれています。 レジストリを変更する前に、レジストリのバックアップを必ず作成し、問題が発生した場合にレジストリを復元する方法について確実に理解しておいてください。 レジストリをバックアップ、復元、編集する方法については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示してください。

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 パス\File.reg
    ここでFile.regは、既定のプリンターを格納するために使用した名前です。

方法 2

特定の領域のコンピューターに似たコンピューター名が含まれている場合は、コンピューター名の特定の文字セットに一致する .vbs スクリプト ファイルを使用して、対応するプリンターをインストールできます。 このメソッドに含まれるサンプル コードでは、IF 行を変更するだけで済みます。 たとえば、コード内の最初の IF ステートメントは、"コンピューター名に "LAB1-" というテキストが含まれている場合は、既定のプリンターを "\\LAB1\LaserJet" に設定します。 このメソッドを完了するには:

  1. 次のサンプル VBS コードを にコピーします。たとえば、Defaultprinter.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 行の唯一の部分は、二重引用符間です。 IF 行を追加する必要がある場合があります。

  3. レジストリ エディターを使用して、次のレジストリ キーの下に ResetPrinter 文字列値を作成します。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

  4. ResetPrinter の値は、次の値のようになります。

    WSCRIPT.EXE パス\DefaultPrinter.vbs
    ここで 、path は、Defaultprinter.vbs ファイルが格納されている場所です。

注:

また、実行キーの代わりにログイン スクリプトから Defaultprinter.vbs ファイルを実行することもできます。 この記事で説明するどちらの方法でも、ユーザーのプロファイルが印刷に設定されている既定のプリンターがリセットされます。 また、この記事に含まれるサンプル スクリプトが正しく動作しない場合は、Windows スクリプト ホストをアップグレードまたはインストールする必要があります。

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。