substコマンドと同じことをするDefineDosDevice

kiuyu

2013/05/31

substコマンドは便利

subst h: c:\windows

とかやるとwindowsフォルダをh:ドライブとしてアクセスできる。

WindowsのAPIで同じことをやりたい

DefineDosDeviceという便利なAPIがある。

DefineDosDevice(0, _T("h:"), _T("C:\\windows"));

で上記のsubstと同じ結果になる。

共有フォルダを扱うには一工夫

共有フォルダのようにUNCにドライブレターを割り当てる場合は一工夫が必要。\FileServer?\SharedFolderにi:ドライブを割り当てる場合は以下。

DefineDosDevice(DDD_RAW_TARGET_PATH, _T("i:"), _T("\\??\\UNC\\FileServer\\SharedFolder"));</

ちなみに、こうやって割り当てたドライブはエクスプローラから見ると「切断したネットワークドライブ」と表示される。net useコマンドと同じことをするWNetAddConnectionあたりを使えるなら、そちらの方が良いかもしれない。