DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ディスク容量&空き容量の取得

環境/言語:[VB.NET]
分類:[.NET]

こちらでいろいろと勉強させていただいている。初心者です。
ディスクの全体の容量と空き容量を求めて使用率を求めたいのですが、
どのようにすればよいか分かりません。.NET Tipsに↓のサンプルが乗っていたのですが、全体の容量の求め方が分からなかった為断念し、
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[VB.NET]
System.Management.ManagementObject mo =
New System.Management.ManagementObject("Win32_LogicalDisk=""C:""")
'C:のディスクの空き容量を取得する
Dim fs As UInt64 = CType(mo.Properties("FreeSpace").Value, UInt64)

'結果を表示する
Console.WriteLine("C:の空き容量は{0}バイトです。", fs)
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

他のサイトで見つけた
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Public Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, ByVal lpFreeBytesAvailableToCaller As Long, ByVal lpTotalNumberOfBytes As Long, ByVal lpTotalNumberOfFreeBytes As Long) As Boolean
Dim Name As String
Dim Sekuta As Long
Dim nByte As Long
Dim Kurasuta As Long
Dim Drive As Long
Dim FreeSpace As Double 'ディスクの空き容量
Dim Youryou As Double 'ディスクの容量

'C:のディスクの空き容量を取得する
Name = "C:"
'ディスク情報を取得
Ret = GetDiskFreeSpaceEx(Name, nByte, Youryou, FreeSpace)
Youryou = Sekuta * nByte * Drive '全体の容量
FreeSpace = Sekuta * nByte * Kurasuta '空き容量を取得
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
でもnByte, Youryou, FreeSpaceが0でうまく取得できません。
なにが悪いのかまた、他の方法を教えてください。宜しくお願いします。
ひろさん、こんにちは。

http://www.bcap.co.jp/hanafusa/
の、FileSystemObject関係をご覧になれば・・・。
VB6で書かれていますが、VB.NETでも使えますよ。  kage
ひろさん どうもです。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[VB.NET]
System.Management.ManagementObject mo =
New System.Management.ManagementObject("Win32_LogicalDisk=""C:""")
'C:のディスクの空き容量を取得する
Dim fs As UInt64 = CType(mo.Properties("FreeSpace").Value, UInt64)

'結果を表示する
Console.WriteLine("C:の空き容量は{0}バイトです。", fs)
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

を改造すれば可能ですよ!
"FreeSpace"を"Size"に変更してみてください。
結果が出ると思いますが・・・
ご参考に!

DOBON.NET | プログラミング道 | プログラミング掲示板