SDメモリーカードには書き込みを禁止するロックタブがあるが、より使用頻度が高いUSBメモリーは、書き込み禁止スイッチを備えるメディアが少ない。そこでWindows 8.1の設定によって、USBメモリーを書き込み禁止にする方法を紹介しよう。

PC側でリムーバブルディスクを書き込み禁止にするレジストリ設定はそこそこ有名だが、別の方法もあることをご存じだろうか。今回は「diskpart」というコマンドを使って、USBメモリーやUSB HDDへの書き込みを禁止するTipsを紹介しよう。

「Windows 8.1ミニTips 第17回」より、2014年4月9日にリリースされたWindows 8.1 Updateを適用した環境を対象としています。

「diskpart」で書き込みを抑止する

前回は「ローカルグループポリシーエディター」を使ったが、これはWindows 8.1 ProやEnterpriseエディションでのみ用意された機能だ。今回の「diskpart」コマンドは、無印のWindows 8.1でも利用できる。diskpartコマンドは、Windows 2000時代から使われてきた、ディスクパーティションを操作するコマンドラインベースのユーティリティだ。

Windows 8.1でストレージを増設する場合、「ディスクの管理(diskmgmt.msc)」を使用する機会が多いため、diskpartの使用場面は多くない。だが、パーティションの作成やフォーマット、ドライブ文字の割り当てなど、diskpartの能力は、ディスクの管理に引けを取らない。今回使用するのは、ストレージに対する属性の確認や設定を行う「attributes」だ。

増設したストレージの初期化やパーティション作成などを行う「ディスクの管理」

コマンドラインからストレージを操作する「diskpart」。さまざまなコマンドを備えている

早速使い方を紹介しよう。管理者権限でコマンドプロンプトを起動し、diskpartを起動するとプロンプトが現れる。diskpartは内部コマンドを入力して対話的にストレージ操作を行うタイプのユーティリティツールだ(スクリプトによる自動化も可能)。

「Win」+「X」キーを押してクイックアクセスメニューを呼び出し、「コマンドプロンプト(管理者)」をクリック/タップするか「A」キーを押す

diskpartでは、最初に操作するパーティションやディスクを確認し、選択する必要がある。まずは、PCが認識しているストレージの一覧を確認する「list disk」を実行しよう。下図で示した例では、ディスク0がHDD、ディスク1がUSBメモリーだ。分かりにくい場合は空き容量を参考に判断するとよい。

最初に「diskpart」と入力して「Enter」キーを押して、同名のユーティリティツールを起動。その後プロンプトに「list disk」を入力して「Enter」キーを押す。この場合は「ディスク1」がUSBメモリーだ

続けてディスクを選択するため、「select disk 1」を実行する。これでUSBメモリーが操作対象となった。後は「attributes disk set readonly」を実行して、選択したディスクに対するリードオンリー属性(書き込み禁止)を割り当てるだけだ。diskpartを終了するには「exit」コマンドを実行する。

ディスク1を選択するため「select disk 1」と入力して「Enter」キーを押す。続いて書き込み禁止を実行するために、「attributes disk set readonly」と入力して「Enter」キーを押す。これで設定完了だ

では、動作を確認してみよう。下図は順番にフォーマット、新規作成、ファイルコピーを試したものだが、その結果はポリシー設定と大きく異なった。例えばフォーマット操作はダイアログから実行した時点で注意メッセージが現れる。ファイルの新規作成は完全なエラーとなった。そしてファイルコピーはアクセス権限ではなく、禁止であることを示すメッセージが現れる。前回の結果と見比べてみると面白いだろう。

リムーバブルディスクにフォーマットの実行を試みた状態。前回と異なるフォーマット設定を行うダイアログは現れるが、実行時に注意メッセージが現れる

こちらはリムーバブルディスク上で新規ファイルの作成を試みた状態。前回とは異なりエラーが発生した

リムーバブルディスクにファイルのコピーを試みたが、書き込み禁止であることを示すメッセージが現れた

書き込み禁止を解除するには、diskpartの「select disk」でディスク(USBメモリー)を操作対象にしてから、「attributes disk clear readonly」と実行してほしい。

ちなみに、前回のポリシー設定(ローカルグループポリシーエディター)はOSレベルで書き込みを抑止し、diskpartはマウントしたストレージに対して書き込みを抑止する。場面に応じて使い分けると便利だ。

書き込み禁止の解除は「attributes disk clear readonly」と入力して「Enter」キーを押す

前述のとおり、diskpartはスクリプトによる自動実行機能をサポートしている。例えば今回の書き込み禁止設定は下記の内容をスクリプトファイルとして作成し、「diskpart /s {スクリプトファイル}」と実行すればよい。

select disk ●
attributes disk set readonly

だが問題は、リムーバブルディスクに割り当てられるディスク番号が固定されない点だ。そのため、誤ったディスク番号を指定すると意図しないディスクがリードオンリーとなり、Windows 8.1の動作に悪影響を及ぼすため、詳細は見合わせることにした。ご了承頂きたい。

阿久津良和(Cactus)