2014年10月24日金曜日

特定のドライブを非表示にする方法(レジストリ編)

共有PC(最近ではVDIやSBCなども)でローカルへデータを保存させたくないからCドライブなどの特定ドライブを非表示にしたいというご要望を頂くことがあります。

これは、グループポリシーやレジストリを活用すれば実現出来ます。

グループポリシーで設定する方法は、以下のMicrosoftさんのKBに詳しく書かれています。
http://support.microsoft.com/kb/231289/ja

既定で用意されているポリシーは以下の7つで、Zドライブなどを個別に制御したい場合は、
ADのポリシーファイル(System.adm)を書き換えれば追加することも出来ます。

・A、B、C および D ドライブのみを制限する
・A、B および C ドライブのみを制限する
・A および B ドライブのみを制限する
・すべてのドライブを制限する
・C ドライブのみを制限する
・D ドライブのみを制限する
・ドライブを制限しない

実際に試してみたところ、どうも私の検証環境ではうまく動作せず、、ポリシーファイルに追加してみても、グループポリシー側のパラメータに出てきてくれません。。

レジストリでの制御を試してみたところ、こちらはうまく行きました!

System.admの変更方法と比べると、手間もそれほど変わらないですし、System.admの変更は他のポリシーへの影響も少なからずあると思うので、これはこれでオススメです。

せっかくなので、詳しい設定方法を紹介したいと思います。


それでは、『Zドライブのみ参照可能にする』というお題目に沿って説明します。

まず、設定すべきレジストリ情報。
キー:HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
値:NoDrives

設定する値のデータがかなり曲者です。(笑

値のデータの算出方法ですが・・・
非表示にしたいドライブに基いたバイナリ文字列を定義し、それを10進数に変換します。
言葉だけだと分かり辛いと思いますので、実践です。

まず、AからZまでを左から順に並べます。
[例]
ABCDE・・・(中略)・・・VWXYZ

次に、非表示にしたいドライブの下に「1」、表示しておきたいドライブの下に「0」を記載します。
[例]
ABCDE・・・(中略)・・・VWXYZ
11111・・・(中略)・・・11110
※『Zドライブのみ参照可能にする』ので、Zの下だけが「0」、それ以外はすべて「1」です。

そして、「1」のフラグが立っているところを10進数に変換した値をすべて加算するのですが、
10進数に変換した場合の値は、Aから順にA=1(1)、B=A*2(2)、C=B*2(4)、D=C*2(8)、
E=D*2(16)・・・(中略)・・・Z=Y*2(33554432)となります。
※今回の場合だと、A~Yまでが1なので、すべての値を加算すると「33554431」になります。

これを毎回計算するのは面倒だと思い、、計算ツールを作ってみました。
# 非表示にしたいドライブの下に『1』を設定すると、設定すべき値を計算してくれます。

設定すべき値が決まったところで、グループポリシーを使ってレジストリを配布します。
※もちろん、ローカルのレジストリに直接書き込んでも同じ挙動になります。

まずは、何も制御していない状態でマイコンピュータを表示するとこんな感じです。

グループポリシーエディタを起動します。
[ユーザーの構成]-[基本設定]-[Windowsの設定]-[レジストリ]にアクセス。

右クリックメニューより、[新規作成]-[レジストリ項目]。

必要な情報を登録します。

アクション:作成
ハイブ:HKEY_CURRENT_USER
キーのパス:Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
値の名前:NoDrives
値の種類:REG_DWORD
値のデータ:33554431
※"キーのパス"の先頭に「\」を置くと正しく動作しないので注意。

ポリシーが定義されました。

「gpupdate /force」でポリシーを更新し、マイコンピュータを表示すると、、Zドライブだけ!

レジストリにもきちんと値が反映されています。

あくまで非表示なだけなので、アドレスバーに「C:\」と直接入力すると、アクセス出来ます。

アクセスも防ぎたい、という場合には「NoDrives」ではなく「NoViewOnDrive」を使います。
パスや値のデータは同じものでOK。

アクション:作成
ハイブ:HKEY_CURRENT_USER
キーのパス:Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
値の名前:NoViewOnDrive ※こちらは"Drives"ではない点に注意!
値の種類:REG_DWORD
値のデータ:33554431
※こちらも"キーのパス"の先頭に「\」を置くと正しく動作しないので注意。

「NoViewOnDrive」はドライブそのものは見えますが、アクセスが出来なくなります。

もちろんアクセスを許可しているZドライブにはアクセス出来ます。

「NoViewOnDrive」については、アクセスが拒否されるので、"エクスプローラ"からのアクセスはもちろん、"ファイル名を指定して実行"からもアクセス出来ません。
"ファイル名を指定して実行"で「mspaint」や「calc」など、コマンドで直接アプリケーションを
起動することは出来るのですが、影響度合については環境次第かなと思います。

とりあえず見えなくするには「NoDrives」だけで十分かなと思います。
見えるのにアクセス出来ないというのも気持ち悪いので、「NoViewOnDrive」を使う場合は「NoDrives」も組み合わせることをオススメします。

さいごに、グループポリシーを使ってレジストリを配布する場合は、、
「アクション」を使いこなすことが重要です。

新規追加の場合は「作成」、データを更新する場合は「更新」、削除したい場合には「削除」。
ポリシーを削除しただけではレジストリは削除されないのでご注意を。

0 件のコメント:

コメントを投稿