A~Zの常識を超える!Windowsドライブレターの知られざる仕様

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

WindowsのファイルシステムといえばC:D:といったドライブレターが特徴です。ドライブレターはアルファベットのA~Zに限定されているかのように思えますが、それは表面的な制限だけなのかもしれません。

ブログ記事「Windows drive letters are not limited to A-Z」は、Windowsの内部構造を探り、A~Z以外の文字でもドライブレターが成立することを詳しく解説しています。

記事によると、Windowsのドライブレターは実は A~Zに限定されておらず、subst コマンドを使えば +:\€:\ のような非アルファベットのドライブを作成可能とのこと。

以下は、C:\fooディレクトリへのエイリアスとしてドライブ+:\ を作成する例です:

subst +: C:\foo

+:\ドライブはcmd.exeでは普通に動作します。

> cd /D +:\

+:\> tree .
Folder PATH listing
Volume serial number is 00000001 12AB:23BC
+:\
└───bar

実は、ドライブレターの正体は「Object Manager」に登録されたシンボリックリンクです。Win32パス (C:\foo)は内部で NTパスの(\??\C:\foo)に変換され、最終的に\Device\HarddiskVolumeX\fooへと解決されます。

Object Managerは、名前付きオブジェクトの追跡を担当しており、C:を単なるシンボリックリンクとして扱えるように、+:€:を扱うこともできます。subst €: C:\foo のようにユーロ記号やギリシャ文字をドライブレターに設定することもできるのです(ただし設定する文字は、UTF-16の範囲内でなければならないという制限は存在します)。

目次

実用上の制約

+:\€:\ はコマンドプロンプトでは動作するものの、エクスプローラーやPowerShellでは認識されません。

UTF-16の制約により、サロゲートペアを含む文字はドライブレターとして使えないという制限も存在します。

また、SetVolumeMountPointW APIではユーロ記号が「¬」に変換されるなど、未対応文字は予期せぬ結果を生むこともあります。

まとめ

Hacker Newsでもこの記事は注目されており、€:\ のような非ASCIIドライブレターが動作することに驚きの声が寄せられています。また、NTカーネルの内部構造の柔軟さに比べ、ユーザー向けのUIが制限されている点が面白いとも評価されています。

技術者にとっては「面白いトリビア」であるものの、非標準ドライブレターはマルウェアに悪用される可能性があるのではという指摘もあり、セキュリティの面からの懸念も寄せられています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次