Descobrindo a letra do drive de CD

 

Utilizando uma combinação da função GetLogicalDrives e o uso de ManagementObjects (WMI) podemos facilmente chegar a este resultado.

A função GetLogicalDrives nos devolve um array de strings com as letras de drives existentes na máquina. Para descobrirmos qual é o CD devemos utilizar os managementObjects.
Para fazer uso dos ManagementObjects devemos fazer references para o assembly System.Management.
Veja como fica uma função para devolver a letra do drive de CD:


Function AcharCD() As String

Dim drives As String()

Dim s As String

drives = System.IO.Directory.GetLogicalDrives()


For Each s In drives

Dim letra As String = s.Substring(0, 2)

Dim mg As New System.Management.ManagementObject("win32_logicaldisk.deviceid=""" & letra & """")

mg.Get()

If mg("drivetype").ToString = "5" Then

  Return (letra)

End If

Next

Return ("")

End Function


No constructor do ManagementObject passamos a identificação do objeto, incluindo a letra do disco, claro. O método Get faz o vinculo com o ManagementObject. Após isso podemos acessar as propriedades do objeto, tal como DriveType, cujo valor 5 indica um CDROM.