I need to be able to get the partition/filesystem UUID of a partition, similar to how you can with VOL
in WinDOS and ls -l /dev/disks/by-partuuid
in *nix, but with C# code. What's the best way to do this?
For reference, I need to be able to get the UUID from either the current directory, or the "closest" mount upwards.
EDIT: My bad, should've said this up front: it needs to run on Mono.
You can write the code for both platforms and then decide at runtime based on Environment.OSVersion.Platform
which one to use. Make sure you write the implementations in separate methods (or classes), that way the runtime won't attempt to load the pinvoked libraries for the wrong platform.
For windows you can use the GetVolumeInformation or the WMI as described in the other answer. For linux you can use the directory you mentioned in your question possibly in conjunction with pinvoking readlink or using the Mono.Posix assembly.
You may need to P/Invoke GetVolumeInformation function.