この記事では、ローミング プロファイルを使用してローミングするプリンターの動作を変更する方法について説明します。
適用対象: Windows 10 - すべてのエディション
元の KB 番号: 304767
重要
この記事には、レジストリの変更に関する情報が含まれています。 レジストリを変更する前に、レジストリのバックアップを必ず作成し、問題が発生した場合にレジストリを復元する方法について確実に理解しておいてください。 レジストリをバックアップ、復元、および編集する方法については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
256986 Microsoft Windows レジストリの説明
まとめ
設計上、ユーザーが移動プロファイルを使用している場合、そのユーザーの既定のプリンターはユーザー プロファイルと共にローミングされます。 ただし、一部の環境では、これは望ましい動作ではない可能性があります。 この記事では、この動作を変更するために使用できるメソッドについて説明します。
詳細
警告
レジストリ エディタの使用を誤ると、オペレーティング システムの再インストールが必要になるような深刻な問題を引き起こす可能性があります。 レジストリ エディターの不適切な使用によって生じた問題については、解決を保証できません。 リスクを理解した上でレジストリ エディターを使用してください。
重要
この記事の情報は、会社の管理者が使用するように設計されています。 環境でこの記事に記載されているメソッドのいずれかを使用する前に、テスト環境でメソッドを十分にテストする必要があります。
プリンターはユーザーのローミング プロファイルを使用してローミングするように設計されているため、既定のプリンターはレジストリの HKEY_CURRENT_USER ブランチに格納されます。 この動作を変更するには、次のいずれかの方法を使用します。
方法 1
既にインストールされているプリンターの既定のプリンター設定をエクスポートし、ユーザーがコンピューターにログオンしたときに設定をユーザーのプロファイルにマージします。
レジストリ エディター (Regedit.exe) を使用して、次のレジストリ キーをエクスポートします。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
手順 1 で作成したレジストリ (.reg) ファイルをテキスト エディターで変更し、キーの下にあるレジストリ値の名前が次の値になるようにします。
"Device"=...
Note
レジストリ ファイルの下部に空白行が含まれている必要があります。
レジストリ エディター (Regedit.exe) を使用して、次のレジストリ キーの下に新しい ResetPrinter 文字列値を追加します。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
ResetPrinter 値の値は、次の値のようになります。
-S path をREGEDIT.EXEします\File.reg
ここで File.reg は、既定のプリンターを格納するために使用した名前です。
方法 2
特定の領域内のコンピューターに似たコンピューター名が含まれている場合は、コンピューター名の特定の文字セットに一致する .vbs スクリプト ファイルを使用して、対応するプリンターをインストールできます。 このメソッドに含まれるサンプル コードでは、IF 行を変更するだけで済みます。 たとえば、コード内の最初の IF ステートメントは"コンピューター名に "LAB1-" というテキストが含まれている場合、既定のプリンターを "\\LAB1\LaserJet" に設定します。 このメソッドを完了するには:
次のサンプル VBS コードを a. 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
必要に応じて、IF 行を変更します。 変更する必要がある IF 行の部分は、二重引用符の間だけです。 IF 行を追加する必要がある場合があります。
レジストリ エディターを使用して、次のレジストリ キーの下に ResetPrinter 文字列値を作成します。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
ResetPrinter の値は、次の値のようになります。
WSCRIPT.EXE path\DefaultPrinter.vbs
ここで、 path は Defaultprinter.vbs ファイルが格納されている場所です。
Note
実行キーの代わりに、ログイン スクリプトから Defaultprinter.vbs ファイルを実行することもできます。 この記事で説明するどちらの方法でも、ユーザーのプロファイルが印刷に設定されている既定のプリンターがリセットされます。 また、この記事に含まれているサンプル スクリプトが正しく動作しない場合は、Windows スクリプト ホストのアップグレードまたはインストールが必要になる場合があります。
Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。