今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

WindowsXPと仮想ドライブ

テストのために subst コマンドで仮想ドライブを使った。実際には C と D のドライブを持ったパソコンで動作しているシステムだけど、テスト用のパソコンは C ドライブがハードディスクで D ドライブは CD-ROM ドライブ。OS は WindowsXP だ。
まずはコンピュータの管理から D ドライブに割り当てている CD-ROM ドライブを E ドライブに変更する。これで D ドライブが空いた。そして subst コマンドで仮想ドライブを割り当てた。

C:\> subst d: c:\tmp

アプリケーションは D:\log にログを記録するように設定している。そしてログを記録するイベントを作った。しかしログファイルが生成されない。1時間ほど前に Windows2000 で同じことを試したんだけど、そちらでは問題なくログが記録されていた。なぜ???
ログの記録先を C:\ に書き換えてみてイベントを作ったところ、ログファイルが生成され、イベントの内容が記録された。「うまくいくじゃん」と、ログの記録先を D:\log に戻してイベントを作ると、やはり記録されない。
もしかして仮想ドライブに対して書き込みできない?とか思って、コマンドプロンプトから書き込んでみる。

C:\> copy con d:\log\test.log
abcdefg
^Z
        1 個のファイルをコピーしました。
C:\>

問題なく書けてしまった。
再度イベントを発生させるけど、やっぱりアプリケーションからのログ記録には失敗してしまう。
今のままでは時間ばかり無駄に使ってしまう。とりあえずはテストができればいいのさ、と、気を取り直して別の解決策を考える。仮想ドライブを使うことを諦めて割当を解除する。

C:\> subst d: /d

そして、USBフラッシュメモリーを USB ポートに突っ込んでみた。USBフラッシュメモリーが D ドライブに割り当てられた。
再度、イベントを作ってみた。ログファイルが生成され、ログが記録された。
なんだかよくわからんんが、WindowsXP では、仮想ドライブに対してアプリケーションから書き込みがうまくできないらしい。何か設定を変更すればできるのかもしれんけど。
なんでこんなことになるのか、教えてくだされ。>エライ人