0

问题很简单,我想列出我电脑上的所有驱动器。

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

DriveInfo.GetDrives();

Directory.GetLogicalDrives();

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

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

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

尽管如此,还是没有结果。

请帮忙!

4

1 回答 1

0

那些手机不是驱动器,它们是WPD 设备

如果您只想列出这些,Windows 包括了 COM API。

这是一个 C++ 示例。

在 C# 中使用 COM 互操作,可以在没有 C++ 的情况下执行相同的操作。设置需要一些时间(您必须引用两个 COM 类型库,PortableDeviceApiLib 和 PortableDeviceTypesLib,并解决 COM 类型库导入器的一些问题)以及学习 API,但我曾经为某些客户端做过,解决方案工作正常。


但是,如果您不仅需要 MTP 设备,还需要 Windows 资源管理器在“这台电脑”下显示的任何东西(可以是任何东西,一些第三方应用程序或驱动程序注册自己的 shell 扩展,将内容添加到“这台电脑”),那么你将需要完全不同的 API,但它又是 COM API。Windows 提供了IShellFolder 接口来枚举内容。

这是一些关于C# 中类似内容的文章。

于 2016-04-17T19:44:02.973 回答