VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 ドライブ関係のメニュー
1.このコンピューター上で利用可能なドライ名を列挙する
2.ドライブの種類を取得する
3.ドライブの総容量(MB単位)・空き領域・使用領域を取得
4.指定のドライブの存在及びドライブの準備ができているかどうかを取得
5.ドライブのボリュームラベル・ファイルシステム・シリアルナンバー等を取得
6.
7.
8.
9.
10.
11.
12.
 .
20.その他、当サイト内に掲載のドライブに関するサンプル 


5.ドライブのボリュームラベル・ファイルシステム・シリアルナンバー等を取得(29_Drv_05) (旧、SampleNo.000)
1.DriveInfo.GetDrives メソッドを使ってのドライブのボリュームラベル他の情報を取得する
2.WMI の Win32_LogicalDisk クラスを使ってのドライブのボリュームラベル他の情報を取得する
3.WMI の Win32_LogicalDisk クラスで取得できるドライブ情報の一覧(参考)
4.文字列を指定のバイト数にカットする関数(漢字分断回避)
5.
6.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :System.Management(WMI を使用する場合)
参照設定:System.Management(WMI を使用する場合)
  参照設定方法の参照
その他 :
    :
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.DriveInfo.GetDrives メソッドを使ってのドライブのボリュームラベル他の情報を取得する

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox1.Clear()
    Dim s1 As String = "{0} :  ボリュームラベル {1} ファイルシステム {2}"

    For Each Drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()
        If Drive.IsReady Then
            TextBox1.Text &= String.Format(s1, Drive.Name, fStrCut(Drive.VolumeLabel, 20), _
                                                           fStrCut(Drive.DriveFormat, 10)) & vbCrLf
        End If
    Next
End Sub

このページのトップへ移動します。 2.WMI の Win32_LogicalDisk クラスを使ってのドライブのボリュームラベル他の情報を取得する

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox1.Clear()
    Dim s1 As String = ""
    s1 = "{0}  :  ボリュームラベル {1} ファイルシステム {2} シリアルナンバー {3}"
    Dim mc As New ManagementClass("Win32_LogicalDisk")
    Dim moCollection As ManagementObjectCollection = mc.GetInstances()
    For Each mo As ManagementObject In moCollection
        TextBox1.Text &= String.Format(s1, mo("Name"), fStrCut(CStr(mo("VolumeName")), 20), _
                   fStrCut(CStr(mo("FileSystem")), 8), fStrCut(CStr(mo("VolumeSerialNumber")), 20)) & vbCrLf
    Next
End Sub

このページのトップへ移動します。 3.WMI の Win32_LogicalDisk クラスで取得できるドライブ情報の一覧(参考)
私の環境での取得結果であって環境によって取得結果も変わります。

Access            : 0           Name             : C:         
Availability         : *** 未設定 ***     NumberOfBlocks        : *** 未設定 ***   
BlockSize          : *** 未設定 ***     PNPDeviceID         : *** 未設定 ***   
Caption           : C:           PowerManagementCapabilities : *** 未設定 ***   
Compressed          : False         PowerManagementSupported   : *** 未設定 ***   
ConfigManagerErrorCode    : *** 未設定 ***     ProviderName         : *** 未設定 ***   
ConfigManagerUserConfig   : *** 未設定 ***     Purpose           : *** 未設定 ***   
CreationClassName      : Win32_LogicalDisk   QuotasDisabled        : *** 未設定 ***   
Description         : ローカル固定ディスク  QuotasIncomplete       : *** 未設定 ***   
DeviceID           : C:           QuotasRebuilding       : *** 未設定 ***   
DriveType          : 3           Size             : 472495681536    
ErrorCleared         : *** 未設定 ***     Status            : *** 未設定 ***   
ErrorDescription       : *** 未設定 ***     StatusInfo          : *** 未設定 ***   
ErrorMethodology       : *** 未設定 ***     SupportsDiskQuotas      : False        
FileSystem          : NTFS          SupportsFileBasedCompression : True        
FreeSpace          : 376907251712      SystemCreationClassName   : Win32_ComputerSystem
InstallDate         : *** 未設定 ***     SystemName          : UserName       
LastErrorCode        : *** 未設定 ***     VolumeDirty         : *** 未設定 ***   
MaximumComponentLength    : 255          VolumeName          : T012345000B     
MediaType          : 12           VolumeSerialNumber      : CA0D3FA71      

このページのトップへ移動します。 4.文字列を指定のバイト数にカットする関数(漢字分断回避)

Private Function fStrCut(ByVal Mystring As String, ByVal nLen As Integer) As String
'文字列を指定のバイト数にカットする関数(漢字分断回避)
    If IsNothing(Mystring) Then Mystring = "Null"
    Dim sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
    Dim TempLen As Integer = sjis.GetByteCount(Mystring)
    If nLen < 1 Or Mystring.Length < 1 Then Return Mystring
    If TempLen <= nLen Then   '文字列が指定のバイト数未満の場合スペースを付加する
        Return Mystring.PadRight(nLen - (TempLen - Mystring.Length), CChar(" "))
    End If
    Dim tempByt() As Byte = sjis.GetBytes(Mystring)
    Dim strTemp As String = sjis.GetString(tempByt, 0, nLen)
    '末尾が漢字分断されたら半角スペースと置き換え(VB2005="・" で.NET2003=NullChar になります)
    If strTemp.EndsWith(ControlChars.NullChar) Or strTemp.EndsWith("・") Then
        strTemp = sjis.GetString(tempByt, 0, nLen - 1) & " "
    End If
    Return strTemp
End Function

このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
ドライブ Drive  GetDrives メソッド Directory.GetLogicalDrives メソッド FileSystemProxy.Drives プロパティ Environment.GetLogicalDrives メソッド
WMIの Win32_LogicalDisk クラス 論理ディスク情報を取得



このページのトップへ移動します。