Windowsでは設定変更時にレジストリを直接操作せざるを得ない場合がある。だが遠隔地のコンピュータや多数のコンピュータが相手だと、1台ずつ対話的にレジストリを操作するのは非現実的だ。このような場合にネットワーク経由でリモートからレジストリを操作する方法と注意点は?
対象OS:Windows 2000 / Windows XP / Windows Vista / Windows Server 2003 / Windows Server 2008
Windowsでは通常、何らかの設定変更の際には、コントロール・パネルのアプレットのようにGUIを介して簡単に操作できるようになっている。しかし設定項目によっては、レジストリを直接操作せざるを得ない場合がある。実際、このTIPSでも、解決方法としてレジストリ操作による設定変更を挙げている記事が数多くある。
とはいえレジストリ・エディタの使い方さえ慣れてしまえば、レジストリの書き換えなどの作業自体は、管理者にとってそう難しいことではないだろう。厄介なのは、遠隔地のコンピュータのように、直接レジストリ・エディタを起動して操作できない場合だ。多数のPCに同一のレジストリ設定を施さなければならない場合も、1台ごとに対話的に操作するのは非現実的だ。
そんなときは、手元のコンピュータからネットワーク経由で対象コンピュータのレジストリに接続し、リモートでレジストリを操作すればよい。Windowsは標準でリモートのレジストリ操作機能を装備している。レジストリ・エディタのような標準のレジストリ操作ツールもリモートでの操作をサポートしている。本稿では、こうしたツールの操作方法とその際の注意点について説明する。
Windows OSは標準でリモートのレジストリ操作をサポートしている。とはいえ実際には、操作対象のコンピュータ側にいくつか条件が必要なので、操作方法を説明する前に注意点を説明する。
■Remote Registryサービスは起動しているか?
リモートからレジストリを操作するには、操作される対象となるコンピュータ上でRemote Registryサービスが起動している必要がある。このサービスが停止していると、リモートでのレジストリ操作はまったくできない。Windows 2000/Windows XP/Windows Server 2003の場合、Remote Registryサービスはデフォルトで自動的に起動するが、Windows Vista/Windows Server 2008では停止している場合があり、明示的な起動を要することがある。
Remote Registryサービスを起動するには、[管理ツール]−[サービス]を起動して「Remote Registry」を開始する。[スタートアップの種類]が「無効」の場合は、あらかじめ「自動」または「手動」に変更してから開始すること。コマンドラインでRemote Registryサービスを起動するには、次のようにnetコマンドを利用する。
net start RemoteRegistry
■Microsoft Windowsネットワークの通信が遮断されていないか?
リモートでのレジストリ操作時には、ファイル共有と同様にMicrosoft Windowsネットワークが利用される。そのため、例えば操作対象のコンピュータのWindows Firewallにより例外なく通信が遮断されていると、リモートでのレジストリ操作もできない。
このような場合は、Microsoft Windowsネットワークの通信ができるようにファイアウォールを設定する。Windows XPのWindows FirewallならTIPS「XP SP2のファイアウォールでリモート管理を有効にする」、Windows Vista/Windows Server 2008ならTIPS「セキュリティが強化されたWindowsファイアウォールでリモート管理を有効にする」のようにして、リモート管理用のポート(TCP/UDPの135/137/138/139/445番などのポートを開いておけばよい。
■ユーザー・アカウント制御(UAC)によってアクセスが禁止されていないか?
もともとリモートでレジストリを操作するには、リモート・コンピュータの管理者権限を要する。しかしWindows Vista/Windows Server 2008でUACが有効な場合、この管理者権限を持つユーザー・アカウントであっても、リモートでのレジストリ操作に失敗することがある。これは、リモートからのアクセスの際、そのユーザー・アカウントの持つ権限がUACによって標準ユーザー並みに制限されるためだ。
このような場合は、一時的にUACを無効にしてからレジストリを操作し、終わったらUACを有効に戻す。具体的な方法はTIPS「Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする」を参照していただきたい。
Windows OS標準のGUIレジストリ編集ツール「レジストリ・エディタ」は、リモートでのレジストリ操作に対応している。
このツールでリモート・コンピュータのレジストリを操作するには、まずリモートのレジストリに「接続」する必要がある。それには、管理者権限を持つユーザー・アカウントでレジストリ・エディタを起動してから、メニューの[ファイル]−[ネットワーク レジストリへの接続]を実行し、「コンピュータ の選択」ダイアログでリモート・コンピュータ名を入力して[OK]ボタンをクリックする。
リモート・コンピュータのレジストリに正しく接続できると、左ペインにて「マイ コンピュータ」アイコンから始まるツリーとは別に、リモート・コンピュータ(次の画面では「Server1」)のアイコンのツリーが追加される。
リモート・コンピュータのレジストリは、接続を切断するまで「マイ コンピュータ」と同様に操作できる。ただしリモートで操作可能なレジストリのルート・キーは次の2つに限られる。
ローカルの場合は、HKEY_CURRENT_USER(短縮名HKCU)ルート・キーを指定することで、ログオン中のユーザーに関する設定を確認できる。しかしリモートの場合はHKCUが指定できない。特定ユーザーの設定は、HKU以下にあるSID(セキュリティ識別子)を名前とするサブ・キーに格納されているので、そのユーザー・アカウントのSID(セキュリティ識別子)を確認して初めてアクセスできる。SIDについてはTIPS「オブジェクトを識別するSIDとは?」が詳しい。
操作が完了したらリモート・コンピュータのレジストリとの接続を切断する。それにはレジストリ・エディタのメニューから[ファイル]−[ネットワーク レジストリの切断]を実行し、「ネットワーク レジストリの切断」ダイアログにて対象コンピュータを選んで[OK]ボタンをクリックする。
reg.exeは、コマンドラインでレジストリの閲覧・操作が可能なツールで、Windows XP以降のWindows OSに標準装備されている。Windows 2000でreg.exeを使う方法については、TIPS「コマンド・プロンプトでレジストリを操作する」を参照していただきたい。
reg.exeでリモート・コンピュータのレジストリを参照するコマンドラインの例を以下に記す。
reg query \\Server1\HKLM\Software\Microsoft
このようにレジストリ・キー名の前に「\\<コンピュータ名>\」を付けると、<コンピュータ名>というリモート・コンピュータを指定したことになる。キー/値の追加(reg addコマンド)や削除(reg deleteコマンド)など、そのほかのreg.exeの使い方でも、このキーの指定方法は共通だ(regコマンドの詳細は、TIPS「コマンド・プロンプトでレジストリを操作する」を参照)。
前述のレジストリ・エディタの場合と異なり、reg.exeではリモート・コンピュータのレジストリとの接続/切断を明示的に実行する必要はない。上記のように、操作時にリモート・コンピュータ名を指定するだけでよい。
操作可能なルート・キーは、レジストリ・エディタと同じでHKLMおよびHKUに限定される。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.