如何以编程方式获取有关在Linux中的存储驱动器的信息? (C#MONO)

我需要以编程方式获得所有存储驱动器在Linux系统中可用以下字段:

  • path
  • 文件系统(FAT32,NTFS等)
  • 包含物理磁盘

它需要支持所有常见的存储types:硬盘,Disk-On-Keys,CdRom,Dvd等

如何从C#做到这一点从MONO运行良好?

这很简单。 阅读文件夹/ dev / disk / by-path的内容。 该目录中的文件是到/ dev中的设备文件的符号链接。 那么你可以找到一些关于这些的一般信息,使用gudev的单声道端口 – 你可以在这里得到一个。 你也需要glib-sharp来使用它,它是gtk-sharp2软件包的一部分(使用你的软件包管理器进行安装)。 在这个例子中使用:

GLib.GType.Init(); gudev.GUdevClient a=new gudev.GUdevClient(null); gudev.GUdevDevice dev=a.QueryByDeviceFile("/dev/disk/by-path/--some-file--"); Console.WriteLine (dev.GetProperty("ID_FS_TYPE")); //will output the file system, eg. ntfs Console.WrtieLine(dev.GetProperty("ID_FS_LABEL")); //will output the label of the disk 

要获得挂载点,您应该找到实际的设备文件。 添加对“Mono.Posix”包的引用并使用Mono.Unix.UnixSymbolicLinkInfo类来查找该文件。 例如:

 Mono.Unix.UnixSymbolicLinkInfo sym=new Mono.Unix.UnixSymbolicLinkInfo("/dev/disk/by-path/--some-file--"); Console.WriteLine(sym.ContentsPath); //Will output something like ../../sda1 

用/ dev替换../ ..而不是读取文件/ etc / mtab。 该文件的格式是这样的:

 /dev/file mountpoint stuff-you-don't-care-about 

每个设备在一个新的行。 所以按/ n分割并按空格分割。 之后的任何事情都很简单,我不认为我需要继续。