ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

ドライブレターのないボリュームの容量を取得する

2008/03/09 | ラベル: , , | 0 コメント | このエントリーを含むはてなブックマークを表示

WMIを使ってディスク容量を取得するサンプルはたくさんあるけど、ドライブレターのない論理ボリュームの容量を取得するものがない。また、Win32_LogicalDisk クラスでも取得できない。

いろいろ調べて試した結果、Win32_Volume クラスで取得できることが分かった。以下は「C:\Users\xxx」にマウントしたボリュームの総容量と空き容量を取得する例。

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Volume Where Caption = 'C:\\Users\\xxx'")
For Each objItem In colItems
    WScript.Echo "Name: " & objItem.Name
    WScript.Echo "Capacity: " & objItem.Capacity
    WScript.Echo "Free Space: " & objItem.FreeSpace
    WScript.Echo
Next

ExecQuery メソッドでは LIKE も使えるので、

Select * from Win32_Volume Where Caption LIKE 'C:\\%'

という書き方もできる。

参考リンク

Vistaでドライブレターがないボリューム上のファイルがインデックスに登録されない

| ラベル: , , | 0 コメント | このエントリーを含むはてなブックマークを表示

Windows Vista には Windows デスクトップ サーチ の機能が統合されていて、様々なファイルの検索が可能になっている。デフォルトでは Users フォルダとオフラインフォルダがインデックス登録され、検索可能になっている。

だけど、なぜか自分のドキュメントフォルダに保存したPDFファイルがインデックスに登録されない。Administratorのドキュメントはちゃんと登録されている。インデックス対象の選択画面を開くと、なぜか自分のデータフォルダだけ表示されないではないか。。。どうやら、ジャンクションフォルダはインデックスの対象外っぽい。そういう仕様なんだろう。

なぜジャンクションになってるか

自分はデータ領域をシステムドライブと分けたいという性分なので、Documents and Settings フォルダを移動せずに別のドライブにマウントする方法 の手順で自分のデータ領域(C:\Users\xxx)を別ボリュームに分けた。dirコマンドで見てみると、C:\Users\xxx はジャンクションになっている。

ドライブレターをつけてみた

試しにデータ領域にしているボリュームにドライブレターを付けると(Uドライブとした)、インデックス対象の選択画面にはそのボリュームが見えるようになる。マウントポイントである C:\Users\xxxはやっぱり見えない。インデックス対象としてUドライブを選択してインデックスを再構築すると、ファイルがインデックス登録されるようになった。しかーし、UドライブとC:\Users\xxxと、2重で登録されてしまう。ださい。。。Uドライブをインデックス対象から外したり、Uドライブのドライブレターを外すと、やっぱりインデックス登録されない。

シンボリックリンクにしてみた

Vista では正式にシンボリックリンクに対応したということなので、ボリュームのマウントをやめて、C:\Users\xxx を Uドライブへのシンボリックリンクにしてみた。すると、Uドライブをインデックスの対象から外した状態でも、C:\Users\xxx以下のファイルがインデックスに登録されるようになった。でも、今度はインデックス対象を選択する画面で自分のデータフォルダだけでなくUsersフォルダ全部が見えなくなってしまった。。。orz

一応インデックス登録されるようになったし、ファイルの読み書きやアプリの利用など通常利用に問題はなさそうなので、しばらくこれで使ってみるか。。。

ちなみに、Vista でシンボリックリンクを作成するには mklink コマンドを使う。

Documents and Settings フォルダを移動せずに別のドライブにマウントする方法

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

データ領域をシステムドライブと別にしたいという人は結構いるんじゃないかと思う。自分もDocuments and Settingsフォルダの場所を変更する を参考にしてDドライブに移している。Documents and Settings フォルダ(名前長いよ。。。)は Vista では Users フォルダに名前が変更されている。うん、短くていいね:-)

しかし上記の手順で Documents and Settings フォルダを別ドライブにすると、不具合が出るアプリもある。自分は Windows Media Player がエラーで使えなくなった。DRM関連の設定がレジストリにバイナリ値として「C:\Documents and Settings\...」と設定されていたためだ。念のためレジストリはチェックしていたのだけど、バイナリ値は検索に引っかからなかった。

他にも、Google Earth は Documents and Settings が Cドライブにあるものとして作られているのか、使うたびに Cドライブに Documents and Settings フォルダが作成されてしまっていた。
※今では解消している模様。

さて、これらの問題も変更前のパス( C:\Documents and Settings )でもアクセスできれば解消できると思われる。パスは変更せず、実際のデータは別のドライブに保存される。

方法

  1. ディスクを追加するなどして、Cドライブ以外のボリュームを用意する。NTFSでフォーマットする。
  2. Documents and Settingsフォルダの場所を変更する を参考にして、「C:\aaa」など適当な場所に一時的に移動する。データ領域として使いたいボリュームはまだここで使わないように。
  3. 「C:\aaa」にちゃんと移動できたことを確認したら、Documents and Settings フォルダを空にする。
  4. コントロールパネル -> コンピュータの管理 -> ディスクの管理 を開く。
  5. データ領域として使いたいボリュームを右クリックして「ドライブ文字とパスの変更」を選び、空にした「C:\Documents and Settings」フォルダにマウントする。
  6. 「C:\Documents and Settings」フォルダに書き込みができることを確認したら、「C:\aaa」に変更した Documents and Settings を再度「C:\Documents and Settings」に戻す。

これで OK、なはず。自分は試してないので、誰かやってみてください。(ぉぃ...)

一応、Vista で似た手順を踏んで C:\Users\test を別ボリュームにすることはできた。C:\Users フォルダ全体じゃないっす。ただちょっと弊害が残った。詳細別エントリで。。。↓

関連エントリ

不機嫌なエクスプローラ

2008/02/03 | ラベル: | 0 コメント | このエントリーを含むはてなブックマークを表示

ノートPCのエクスプローラがたまに(しょっちゅう)おかしくなる。壊れっぷりの一部を紹介。


メニューがなくなり、Windowsの旗マークがびよーんと。


メニューがツールとヘルプだけに。


もう、どうしろっての。。。

再起動すると直るので、システムリソース不足っぽい。