The best way I have found to do this is using WMI but not from within T-SQL, from a PowerShell script. Use Get-WmiObject to read from class Win32_LogicalDisk against Windows 2000 Servers, and Win32_Volume (picks up mount points) against Windows 2003+ servers.
edit: fix name of class Win32_Volume...typed Win32_LogicalVolume from memory
There are no special teachers of virtue, because virtue is taught by the whole community.
--Plato