Nathan Ringo
Nathan Ringo

Reputation: 1003

How can I get the partition UUID of a disk in .NET

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.

Upvotes: 2

Views: 2052

Answers (2)

Jester
Jester

Reputation: 58762

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.

Upvotes: 2

Jake Lin
Jake Lin

Reputation: 11494

You may need to P/Invoke GetVolumeInformation function.

Upvotes: 0

Related Questions