我需要通过以下字段以编程方式获取 linux 系统中可用的所有存储驱动器:
- 路径
- 文件系统(FAT32、NTFS 等)
- 包含物理磁盘
它需要支持所有常见的存储类型:硬盘、Disk-On-Keys、CdRom、Dvd 等。
如何从 C# 执行此操作以从 MONO 良好运行?
最佳答案
其实很简单。 读取文件夹/dev/disk/by-path 的内容。 此目录中的文件是指向/dev 中设备文件的符号链接(symbolic link)。 然后你可以找到一些关于这些的一般信息,使用 gudev 的单端口 - 你可以获得一个 here . 你还需要 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 分割并按空格分割。之后的一切都很简单,我认为我不需要继续。
关于c# - 如何以编程方式获取有关 Linux 中存储驱动器的信息? (C#单声道),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482992/