【Windows】グループポリシーを利用してローカルドライブへの保存を禁止する

batsu
社内SEをやっていると、外に持ち出しするノートPCなどにローカルに保存させたくない状況が出てきます。
最近ではVDI等のシステムを導入して制御する方法が一般的になってきていますが、VDIのシステムを構築しようとするととんでもなく高額な費用がかかります。
そこでActiveDirectoryのグループポリシーを駆使してローカルドライブへの保存を禁止します。
ドメインポリシーでも対応できるので、組織の中にある大量のPCに適用させる事も可能です。

Advertisement

2種類の制御方法がある

グループポリシーを使用して保存を制御する方法として

・ 管理テンプレートを使用した方法
・ レジストリを編集する方法

の2種類があります。

管理テンプレートの方法は「ユーザーの構成」でしか利用出来ません。PCに対して設定したい場合はレジストリを編集する方法で対応します。

管理テンプレートを使用した方法

ローカルドライブへのアクセス禁止設定

[ユーザーの構成]→[管理テンプレート]→[Windowsコンポーネント]→[エクスプローラー]→[[マイコンピューター]からドライブにアクセスできないようにする]

description9

このポリシー設定を開き、「有効」にチェックを入れると

description10

制御したいドライブを選択できるので、必要となる項目を選択。
これで設定は完了です。
ポリシーを即時に適用したい場合はコマンドプロンプトで「gpupdate」コマンドを実行しましょう。

この設定が入った状態のローカルドライブを開こうとすると

description5

という表示が出て、ドライブの中を開けなくなります。

 

ローカルドライブの表示をさせない設定

ドライブの表示自体をさせたくない場合もポリシーで設定可能です。

[ユーザーの構成]→[管理テンプレート]→[Windowsコンポーネント]→[エクスプローラー]→[指定したドライブを[マイコンピューター]内で非表示にする]

description11

このポリシーを有効にすると、先程と同じ制御するドライブを選択する画面が出るので表示させたくないドライブを選択します。

Cドライブのみ非表示にする設定をした結果がこちら

description3

元々Cドライブがローカルディスク、QドライブがLenovoのリカバリー領域でしたが
見事にCドライブのみが見えなくなっています。

ただし、この非表示の設定は見た目のみ非表示にしただけなので「ファイル名を指定して実行」で「C:¥」などとコマンドで実行するとCドライブが表示されてしまいます。
そのため、最初に紹介した「ドライブにアクセスできないようにするポリシー」と一緒に設定すると強固な設定になります。

レジストリを編集する方法

ここまで紹介した方法はグループポリシーの「ユーザーの構成」を使用したものでした。
ログインユーザーID毎に設定が紐づくため、1つのPCに複数ユーザーがログインする場合や、PC毎に設定を変えたい時に対応が出来ない場合があります。

PC毎に設定をするにはグループポリシーの「コンピュータの構成」を使用しますが、「コンピュータの構成」にこの項目がありません。
この場合、レジストリを編集する事で対応が可能です。
今回はグループポリシーを使用してレジストリ編集をしてみます。

レジストリはWindowsの構成情報が格納されているデータベースです。
レジストリの編集内容に問題があると、システムが正常に動作しなくなる場合があります。
レジストリの編集は自己責任で行っていただくようお願いします。
なお、レジストリの編集前に必ずバックアップを作成することを推奨いたします。
バックアップ方法の詳細は、Windowsのヘルプをご参照ください。

ローカルドライブへ保存禁止・非表示にするレジストリ設定

以下のレジストリキーを編集する事で可能になります。

ローカルドライブへの保存を禁止する

【レジストリキー】
HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion
¥Policies¥Explorer
【DWORD値】
NoViewOnDrive
【値】
下記補足を参照

指定したローカルドライブを非表示にする

【レジストリキー】
HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion
¥Policies¥Explorer
【DWORD値】
NoDrives
【値】
下記補足を参照

※補足
設定する値は制御したいドライブによって変わる。

値の設定を行う際、操作対象のドライブを特殊な数値で指定する。
数値は2進数を基礎とし、ドライブレターのAから順に下記のようになる。

Aドライブ 1
Bドライブ 10
Cドライブ 100
Dドライブ 1000
Eドライブ 10000
Fドライブ 100000

Zドライブ 10000000000000000000000000

上記の値を、対象としたいドライブの分だけ加算する。
例えば、EドライブとFドライブを対象とするのであれば、10000+100000=110000となる。
この110000という数値は前述の通り2進数だが、設定するレジストリはDWORD値なので、これを10進数または16進数に変換しておく。

(2進数)110000 = (10進数)48 = (16進数)30

参考 : 新MAKOWIKI 「Windows-ドライブの非表示とアクセス拒否」より

今回の例ではCドライブのみを制限するため設定する値は 
・2進数 = 100
・10進数 = 4
・16進数 = 4
となります。

なお2進数を10進数、16進数に変換する方法がわからない場合は下記のサイトで変換しましょう。

2進数、8進数、10進数、16進数相互変換ツール
https://hogehoge.tk/tool/number.html

グループポリシーへ設定を追加

[コンピュータの構成]→[基本設定]→[Windowsの設定]→[レジストリ]

description15

ここに設定を追加します。

ローカルドライブへの保存を禁止する

アクション 作成
ハイブ HKEY_LOCAL_MACHINE
キーのパス SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
値の名前 NoViewOnDrive
値の種類 REG_DWORD
値のデータ 4
表記 10進数 (今回は16進数でも可)

指定したローカルドライブを非表示にする

アクション 作成
ハイブ HKEY_LOCAL_MACHINE
キーのパス SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
値の名前 NoDrives
値の種類 REG_DWORD
値のデータ 4
表記 10進数 (今回は16進数でも可)

これで設定完了です。
ポリシーを適用して、PCを再起動すれば設定が反映されます。レジストリエディタで値が反映しているのを確認してみて下さい。

なお設定を元に戻したい場合は、先ほどのレジストリ設定のアクションを「削除」にすることで、該当のレジストリを削除できます。
これによりPCの再起動後、再度ドライブにアクセスが可能になります。

この設定だけでは完全に保存禁止には出来ない

設定を入れるとエクスプローラ上から制御したローカルドライブへのアクセスは出来なくなりますが、これだけでは完全に保存を禁止することが出来ません。

例えば前回の保存先として「デスクトップ」や「マイドキュメント」が記憶されていると、保存する際に保存先として表示されてしまい保存出来てしまいます。

またファイルを「名前を付けて保存」をすると保存先を指定するファイルダイアログが表示されます。
その際に初期の設定では左側にナビゲーションウインドウが表示されます(画像はWindows7の場合)

ここからデスクトップやドキュメントフォルダを選択されるとそ保存出来てしまいます。
(Windows10の場合は選択するとエラー表示が出たため、保存出来ないようになっているかも?)

これでは都合が悪いので、ナビゲーションウインドウ自体を消す事で対応します。

長くなるので、方法は別の記事で紹介します↓