![](/img/trans.png)
[英]How do i get information about the window that has focus on Linux using Mono C#
[英]How to programmatically get info about storage drives in linux? (C# MONO)
我需要通过以下字段以编程方式获取Linux系统中的所有存储驱动器:
它需要支持所有常见的存储类型:硬盘,磁盘上键,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
要获取mountpoint,您应该找到实际的设备文件。 添加对“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分割并按空格分割。 之后的任何事情都很简单,我认为我不需要继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.