> ' Get the information on a drive > Public Function GetDriveInformation() As Boolean > Dim lcProviderName As String = "" > Dim lcSQL As String = "" > Dim llSuccess As Boolean = False > Dim loQuery As SelectQuery > Dim loManagementObject As ManagementObject > Dim loSearcher As ManagementObjectSearcher > > ' Reset the values > cVolumeName = "" > cVolumeSerialNumber = "" > nFreeSpace = 0 > > ' Initialization > lcProviderName = cProviderName > > ' Make it compatible > lcProviderName = oApp.StrTran(lcProviderName, "\", "\\") > > ' Adjust SQL as per type of drive > Select Case nType > > ' Local drive > Case 1 > lcSQL = "SELECT FreeSpace,QuotasDisabled,VolumeName,VolumeSerialNumber " + _ > "FROM Win32_LogicalDisk WHERE DeviceID=""" + lcProviderName + """" > > ' UNC drive > Case 2 > lcSQL = "SELECT FreeSpace,QuotasDisabled,VolumeName,VolumeSerialNumber " + _ > "FROM Win32_LogicalDisk WHERE ProviderName=""" + lcProviderName + """" > > End Select > > ' In Windows Service, this doesn't work > Try > loQuery = New SelectQuery(lcSQL) > loSearcher = New ManagementObjectSearcher(loQuery) > > For Each loManagementObject In loSearcher.Get() > > ' Free disk space is irrelevant if per user quota's are enabled > If loManagementObject("QuotasDisabled").ToString() <> "true" Then > cVolumeName = loManagementObject("VolumeName") > cVolumeSerialNumber = loManagementObject("VolumeSerialNumber") > nFreeSpace = loManagementObject("Freespace") > End If > > Next > > llSuccess = True > > Catch loError As Exception > cMessage = loError.Message > End Try > > Return llSuccess > End Function >>