Windows グループポリシーで特定のドライブを非表示に。

Windows10 で、C ドライブを非表示にしたいとか、ネットワークにマップした S: と D: だけ表示させたいとか、リムーバブル USB メモリデバイスに割り当てられる E: とか F: とかを不可視にしたいというケースがあります。

ここでは、既定のグループポリシーに手を加えて、柔軟にドライブの表示/非表示を定義する方法を説明します。



10年前にこんな記事を書いたのですが、未だにご覧になられる方がいらっしゃるようで気になっていました。

グループポリシーでドライブを非表示にする。

という事で、 Windows10 でも、エクスプローラからグループポリシーでドライブが非表示にできるかどうかを試してみました。






Windows のドライブは勿論、アルファベットのA~Zまであるのですが、意図的に見せたくないドライブもあります。例えばC:ドライブに勝手にディレクトリを掘って、そこに重要なデータを保管されたりすると、いざ、PCがご臨終になった場合に、データが無くなったとウルサいエンドユーザさんもいるわけですね。できれば、C:とD: は別なパーティションにわけて、D:ドライブは自由に使ってもいいけどC:ドライブは、システムを復旧した時に保証されないよ、という事もあるわけです。ついでに、

ドキュメントフォルダなんかはパーティションを分けて、D:ドライブに割り当ててあげて、タスクスケジューラなんかでD:ドライブだけをNASなどの隠しドライブに Robocopy してあげれば、最低限ユーザのデータのバックアップは為せば成る。

また、USBの外付け記憶装置や外付けHDDなんかをつないだ時に、ドライブレターが、エクスプローラに表示されなければ、簡単にコピーすることもできません。「なぜコピーできないんだ」と言われれば、それは「セキュリティポリシーだから」で済むわけです。そこで、例えばネットワークに割り当てたP:とかS: とか以外は見せたくないという事も考えられるわけです。

という事で、エクスプローラから、見せたくないドライブをグループポリシーで隠してしまおうの Windows10 版です。もっとも、エクスプローラからは見えないだけで、コマンドプロンプトや、保存したり、エクスプローラから、開く時のアドレスバーに直接ドライブ名を入れてしまえば、見えてしまうのですが、おおよそ9割のエンドユーザさんはそんなことお構いなしに「見えないものは無いもの」と考えてくれるわけですから、それなりに便利だともいえます。



- 基本編 -

さて、グループポリシーエディタ gpedit のドライブを隠す設定は

  1. [ユーザーの構成]、[管理用テンプレート]、[Windows コンポーネント]、[エクスプローラー]
  2. [指定したドライブを [マイ コンピューター] 内で非表示にする] を開く
  3. [指定したドライブを [マイ コンピューター] 内で非表示にする] ダイアログ ボックスで [有効]
  4. ドロップダウン ボックスで該当するオプションをトグルして設定

という手順になるのですが、


Windows グループポリシーで特定のドライブを非表示に。_a0056607_10500340.jpg


ただ、この gpedit のテンプレートでは、決め打ちのドライブを隠す設定だけなので、異なるパーティション D: とネットワークに割り当てた P: と S: だけは見せたいとかのカスタマイズができません。という事で、この「隠しドライブ」のテンプレートをカスタマイズしてみましょう、というのがテーマです。



- 不可視ドライブをカスタマイズする -

C:\Windows\PolicyDefinitions の下に WindowsExplorer.adml というファイルがあります。C:\Windows\PolicyDefinitions が本体で、さらに ..\ja-JP\ に翻訳した内容が記述されています。

C:\Windows\PolicyDefinitions\ja-JP>dir WindowsExplorer.adml
ドライブ C のボリューム ラベルは WindowsC です
ボリューム シリアル番号は 1856-98D7 です
C:\Windows\PolicyDefinitions\ja-JP のディレクトリ
2016/07/17 07:15 80,922 WindowsExplorer.adml
1 個のファイル 80,922 バイト
0 個のディレクトリ 25,201,598,464 バイトの空き領域

C:\Windows\PolicyDefinitions\ja-JP>

翻訳はメモ帳で開くとこんな設定が書かれています。gpedit に出てくる内容そのまんまですね。

: 略


<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">;
<displayName>表示名をここに入力する</displayName>
<description>説明をここに入力する</description>
<resources>
<stringTable>
<string id="ABCDOnly">A、B、C および D ドライブのみを制限する</string>
<string id="ABConly">A、B および C ドライブのみを制限する</string>
<string id="ABOnly">A および B ドライブのみを制限する</string>
<string id="ALLDrives">すべてのドライブを制限する</string>
<string id="ClassicShell">クラシック表示のシェルをオンにする</string>
<string id="ClassicShell_Help">この設定を使用すると、管理者は特定の Windows シェルの動作をクラシック表示のシェルの動作に戻すことができます。

 : 略




実体を開くと

C:\Windows\PolicyDefinitions>dir WindowsExplorer.admx
ドライブ C のボリューム ラベルは WindowsC です
ボリューム シリアル番号は 1856-98D7 です
C:\Windows\PolicyDefinitions のディレクトリ
2016/07/17 07:20 41,886 WindowsExplorer.admx
1 個のファイル 41,886 バイト
0 個のディレクトリ 25,188,646,912 バイトの空き領域

C:\Windows\PolicyDefinitions>

例えば翻訳では 「AB のみを制限する」内容がこのように記述されています。翻訳版の ja-JP の "string id=" の部分を "item displayName=" で定義しています。

: 略

<item displayName="$(string.ABOnly)">
<value>
<decimal value="3" />
</value>
</item>

: 略

ここで問題となるのが "decimal valu=" の部分です。





- 不可視ドライブの値を決定する -

ここで Decimal Value は Z~A をビットに見立てて、0 は見せるドライブ、1 は見せないドライブです。
Dex:3 は 0011b: 0x03 ですから "D:C:B:A: ドライブの B: と A: はビットが立って、制限して見せない"という事になります。

右からZ:Y:X: .... C:B:A: とビットで制限して、内容を10進数で表記しているわけです。実に面倒くさい。

例えば D:E:F:P:S: ドライブだけ見せて、他のドライブをエクスプローラーに表示させたくない場合、次の様なバイナリデータが、7桁の十六進数 0x3FB7FC7 となり、 Decimal 十進数では 66812895 となります。

Novell の ZENworks の Knowledge Database に記事があります。

How to restrict drives on workstations

つまり、D:E:F:P:S だけ見せたいという計算はこういう事です。

**ZW|XWVU|TSRQ|PONM|LKJI|HGFE|DCBA <<-- Drive Letter
0011|1111|1011|0111|1111|1100|0111 <<-- Binary 1:Hide, 0:Show
0x03|0x0F|0x0B|0x07|0x0F|0x0C|0x07 <<-- Hex
66812895 <<-- Decimal

という事で、ドライブの見せ方を決定するには面倒で使えない Windows10 の「電卓アプリ」を使って、二進、十進の計算するわけです。

しかし電卓アプリよりこの面倒な数値を求めるサイトが、まだあるのでご紹介しておきます。とても便利です。


Drives to show/hide

不要なデフォルトの Show Only を Delete して、表示したいドライブレターをチェックします。"New" ボタンを押すと、必要最低限の情報だけを作ってくれます。

Windows グループポリシーで特定のドライブを非表示に。_a0056607_10505797.jpg





Export すると、この様な hidedrive.adm が作成されてダウンロードできるので、参考にすると良いでしょう。 D:E:F:P:S: を表示する値は 66813895 になりました。0 は全部ビットが落ちて "ShowAll" で 67108863 は全部にビットが立って "HideAll" になります。

  : 略

CATEGORY !!WindowsComponents
CATEGORY !!WindowsExplorer
KEYNAME "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
POLICY !!NoDrives
EXPLAIN !!NoDrives_Help
PART !!NoDrivesDropdown DROPDOWNLIST NOSORT REQUIRED
VALUENAME "NoDrives"
ITEMLIST
NAME !!ShowAll VALUE NUMERIC 0
NAME !!HideAll VALUE NUMERIC 67108863 DEFAULT
NAME !!DEFPS VALUE NUMERIC 66813895
END ITEMLIST
END PART
END POLICY
POLICY !!NoViewOnDrive
EXPLAIN !!NoViewOnDrive_Help
PART !!NoViewOnDriveDropdown DROPDOWNLIST NOSORT REQUIRED
VALUENAME "NoViewOnDrive"
ITEMLIST
NAME !!ShowAll VALUE NUMERIC 0
NAME !!HideAll VALUE NUMERIC 67108863 DEFAULT
NAME !!DEFPS VALUE NUMERIC 66813895
END ITEMLIST
END PART
END POLICY
END CATEGORY ; WindowsExplorer
END CATEGORY ;; WindowsComponents

: 略




- 実装してみる -

メモ帳などのテキストエディタで、 C:\Windows\PolycyDefinitions の中身を書き換えて追加する隠しドライブのポリシーを追加します。上書きできないのでいったん保存して、ファイルのバックアップを取ってから、ファイルを PolicyDefinicions にコピーして実装します。

C:\Windows\PolicyDefinitions>type WindowsExplorer.admx

: 略

<item displayName="$(string.DEFPSonly)">
<value>
<decimal value="66813895" />
</value>
</item>

: 略

C:\Windows\PolicyDefinitions\WindowsExplorer.admx は所有者が Administrator でなければ上書きできません。ファイルのセキュリティの詳細から所有者を Administrator グループなどに変更する必要があります。一応バックアップをとってから書き換えることができました。

C:\Windows\PolicyDefinitions\ja-JP>type WindowsExplorer.adml

: 略

<stringTable>
<string id="ABCDOnly">A、B、C および D ドライブのみを制限する</string>
<string id="ABConly">A、B および C ドライブのみを制限する</string>
<string id="ABOnly">A および B ドライブのみを制限する</string>
<string id="ALLDrives">すべてのドライブを制限する</string>
<string id="DEFPSonly">DEFPSのみ見せる</string>
<string id="ClassicShell">クラシック表示のシェルをオンにする</string>
<string id="ClassicShell_Help">この設定を使用すると、管理者は特定の Windows シェルの動作をクラシック表示のシェルの動作に戻すことができます。

: 略

この様な感じで、追加したポリシーを書き換えて保存します。

このC:\Windows\PolicyDefinitions\ja-JP\WindowsExplorer.adml ファイルはいったん別なディレクトリに保管して管理者として上書きします。

実装前

G: I: が見えています。

Windows グループポリシーで特定のドライブを非表示に。_a0056607_10542889.jpg



"DEFPS のみ見せる"が出てきました。「有効」にポリシーを設定して「適用」します。


Windows グループポリシーで特定のドライブを非表示に。_a0056607_10562741.jpg


グループポリシーを即座に適用します。

C:\WINDOWS\system32>gpupdate.exe
ポリシーを最新の情報に更新しています...
コンピューター ポリシーの更新が正常に完了しました。
ユーザー ポリシーの更新が正常に完了しました。

C:\WINDOWS\system32>

エクスプローラからC: H: I: ドライブが消えました。

Windows グループポリシーで特定のドライブを非表示に。_a0056607_10552891.jpg




S:にネットワークの共有記憶領域を割り当てます。S:は見えるようです。







--


今回は、単体PCで実施しましたが、 ZENworks Configuration Management では、変更したPCで iManager から設定し、サーバーにアップすれば良いかと思います。 Windows ドメインを使う場合は、たぶんどこぞの隠し共有フォルダにこのファイルがあるので、書き換えて管理できるでしょう。

このグループポリシーのテンプレート自体をカスタマイズする方法は、若干面倒ですが、他で紹介されているように直接レジストリを書き換える方法より安全でしょうし、また、他にいくつかの Hide Drive Policy のテンプレートを追加して作っておけば応用が利きます。

ドメインコントローラや ZENworks ユーザによって、管理者、ヘルプデスク、一般パワーユーザ、一般ユーザ、先生、生徒の様に様々なパターンが二つのファイルのカスタマイズだけでできるのでとても便利です。

※なお、この方法は Windows Update などで、テンプレートが上書きされる場合があるので、必ずテンプレートのバックアップを取っておくのが良い様です。









-Keyword-

Windows, Windows10 特定のドライブ, ドライブが見えない, ドライブを不可視, ドライブを隠す, 特定のドライブを非表示, グループポリシー, How to Hide Drive letter from Explorer,特定のドライブを「コンピューター」や「エクスプローラー」で非表示, 指定したドライブを [マイ コンピューター] 内で非表示にする, カスタマイズ, マイコンピュータから特定ドライブを見せない, マイコンピューターからドライブを消す方法、グループポリシー cドライブのアクセス禁止、windows10 ドライブを不可視、リムーバブル ディスクを表示させない。windows ドライブを制限する。外付け hdd を見え なくする。


by islandcenter | 2017-10-19 11:14 | ZENworks | Comments(0)