【问题标题】:How to Create a Virtual Windows Drive如何创建虚拟 Windows 驱动器
【发布时间】:2010-11-08 23:13:47
【问题描述】:

我正在尝试创建一个 Windows 虚拟驱动器(如 c:\ )来映射远程存储。 主要目的是以清晰的方式对用户进行操作。因此,用户不会知道他正在从另一个站点写入/读取。

我正在寻找可用的产品,我发现 FUSE 在 Windows 中不是一个选项,WebDAV 直接映射驱动器,我想在 Windows 和远程存储之间建立一个中间层来实现某种服务。 存在另一种替代方案,例如非常昂贵的 Dokan 和 System.IO.IsolatedStorage 命名空间,似乎没有明确创建新的 Windows 驱动器。

可能 pismo (http://www.pismotechnic.com/) 最符合我的要求,但我会知道是否还有其他选择,包括一些 Windows(C++ 或 .NET)本机 API 来做到这一点。

感谢阅读:)

【问题讨论】:

    标签: .net windows winapi virtual drive


    【解决方案1】:

    如我所见,有几个选项可以实现这一点。

    “本机”是创建一个拦截 I/O 操作的自定义驱动程序(.sys 文件)。微软称它为 MiniFilter。这个选项是最难的,但可以让你完全控制。

    懦夫的 ;) 选项是使用现有库来执行此操作,例如 Dokan、GPL (dokan-dev.github.io)、Pismo、免费 (pismotec.com) 或回调文件系统 (callback.com/cbfsconnect)。

    但是,如果您没有将 Windows 作为主要目标,则可以使用 FUSE,这是一个不错的选择。

    【讨论】:

    • 我知道这是一个非常古老的问题,但是您选择了哪种方法以及它的可用性如何?谢谢!
    • @tonek - 我们使用了 Dokan,好吧,玩 Windows 资源管理器和文件系统问题很困难,但我认为 dokan 是最好的免费选择。如果您想要付费的,请选择 Eldos。
    • 有人试过codeproject.com/KB/winsdk/Galaxy_Toolkit.aspx 吗?我还没有尝试过,但从描述来看,它正在做类似的事情。
    • 刚才看GalaxyTK,我认为它只提供不能像映射驱动器那样使用的Windows Shell NameSpace Extension(见下面MSalters对Paul-Jan的回复)
    • 我见过的很多程序都创建了虚拟的“映射网络驱动器”,而不是虚拟硬盘驱动器。这是因为前者更容易实现吗?如果我想要将前者用于虚拟数据 I/O(例如,用于网站存储的虚拟网络驱动器),那么 Prismo 仍然是最佳选择吗?
    【解决方案2】:

    如上所述,我们的Callback File System 是受支持的产品,具有全面的功能集、示例和支持。我们还提供免费的非商业许可。

    【讨论】:

    • 不幸的是,它是一个黑匣子,而且要花钱。
    • 这不是一个营销平台。在建议之前披露您为公司工作。它促进透明度和信任
    • @Bozzy 评论时请注意回复日期。那天的规则不同。礼貌也没有坏处(给你一个友好的提示)。
    • @EugeneMayevski'EldoS 啊,但是现在您知道了新政策,您可以在披露中进行编辑。
    【解决方案3】:

    【讨论】:

    • 这不是 OP 想要的。
    【解决方案4】:

    看看这篇文章。这是使用 Windows 操作系统中的 SUBST.exe 完成的。

    http://code-in-action.blogspot.com/2013/11/create-virtual-drive-through-command.html

    【讨论】:

      【解决方案5】:

      如果您(或其他人)仍然介意编写驱动程序本身,那么已经有几个开源和工作原型:

      【讨论】:

        【解决方案6】:

        您可以编写一个 Shell 命名空间扩展,允许您将 任何东西 表示为一个驱动器(带有子文件夹、文件、自定义菜单等等),但您必须从头开始构建所有功能。好处是网上有很多样例,比如this一个。

        【讨论】:

        • 但是,这些对象只存在于 Shell (Explorer) 级别。您不能在 CreateFile() 调用中使用它们。
        【解决方案7】:

        【讨论】:

        • 感谢您的回复,但这不是我想要的:)
        【解决方案8】:

        在您的应用启动的脚本中使用SUBST 命令可能是一种选择。

        【讨论】:

        • subst 是一个不错的选择,但只要我想实现一种中间层,我想“捕捉”读写事件。我认为用 subst 我无法实现它。也许我可以制作一个“守护程序”程序来持续监视“替换”文件夹,但我更喜欢另一种选择。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 2014-02-21
        • 2023-04-05
        • 1970-01-01
        • 2017-12-01
        • 2010-09-08
        • 1970-01-01
        相关资源
        最近更新 更多