如何列出连接到电脑的所有驱动器,甚至是手机?

时间:2016-03-19 03:19:43

标签: c# android windows-phone drives

问题很简单,我想列出我电脑上的所有硬盘。

我们都知道如何列出驱动器:

DriveInfo.GetDrives();

Directory.GetLogicalDrives();

但是如果我需要将我的CELLPHONE列为驱动器,我可以在资源管理器上看到它,那么为什么没有列出这两种方法的结果?

我用2种手机测试了这种方法。

  • Android:LG G4 Stylus LTE(内置和SD卡,所以这里有2个驱动器)
  • Windows手机:Lumia 1020(无SD卡)

仍然没有结果。

请帮忙!

1 个答案:

答案 0 :(得分:0)

这些手机不是驱动器,而是WPD devices

如果您只想列出这些内容,Windows会为此包含COM API。

Here’s a C++ sample.

使用COM互操作在C#中,没有C ++也可以这样做。设置需要一些时间(您必须引用两个COM类型的库,PortableDeviceApiLib和PortableDeviceTypesLib,并解决COM类型库导入器的一些问题)并且还要学习API,但我曾经为某个客户端做过这个,解决方案工作得很好。

但是,如果您不仅需要MTP设备,而且还需要Windows资源管理器在“此PC”下显示的任何内容(可以是任何东西,某些第三方应用程序或驱动程序注册自己的外壳扩展,将内容添加到“此PC”),然后你需要完全不同的API,但它又是COM API。 Windows提供IShellFolder interface来枚举内容。

这是C#中的一些article about something similar