【发布时间】:2010-09-13 09:03:36
【问题描述】:
有没有办法在 .NET 中模拟磁盘驱动器,拦截读/写/锁定操作?
我想在 C# 中创建一个前端类似于 GMail Drive 的东西。
谢谢, 汤姆
【问题讨论】:
标签: .net emulation hard-drive
有没有办法在 .NET 中模拟磁盘驱动器,拦截读/写/锁定操作?
我想在 C# 中创建一个前端类似于 GMail Drive 的东西。
谢谢, 汤姆
【问题讨论】:
标签: .net emulation hard-drive
在 Linux 上,您可以使用 Mono.Fuse API (http://www.jprl.com/Projects/mono-fuse.html) 使用用户空间代码实现基于 .NET 的文件系统。
【讨论】:
您可以看到http://www.truecrypt.org/ 是如何做到的。它通过使用文件或使用驱动器或分区来做到这一点。然后它安装文件,就好像它是一个真正的驱动器一样。现在,可能源代码有点复杂;)
【讨论】:
我自己为此使用了 Eldos Callback File System,虽然它很好,但并不便宜。
还有一些免费/便宜的项目,我敢肯定最近在 SO 上的一个类似问题中提到了其中一个——不过目前找不到了。不过,稳定性往往是一个主要问题,因为分层的 Windows 文件系统驱动程序并非易事。
【讨论】:
并非如此,.Net 位于操作系统功能(如磁盘访问)之上,为您提供托管文件访问器之类的东西。您可以用托管 C# 编写所有这些功能,但您需要非托管调用才能让操作系统像对待它一样对待它另一个驱动器。
所有的 shell 扩展都是 COM:http://msdn.microsoft.com/en-us/library/cc147467(VS.85).aspx
但是,您可以编写一个允许从资源管理器拖放并且看起来像文件系统视图的 .Net 桌面应用程序。
【讨论】:
您也可以使用EZNamespaceExtension for .NET。这使您可以与 Windows 资源管理器集成。考虑到许可证是每个开发人员而不是分发,所以不太贵。
更新 EZNamespaceExtension.NET 的大问题。它已经很久没有更新了。 LogicNP 似乎对 EZNamespaceExtension.NET 失去了兴趣,因为自 2010 年以来没有发布具有少数新功能的版本。不支持 .NET 4,也不支持 Windows 8 功能区工具栏
【讨论】:
我刚刚使用上面的链接结帐EZNamespaceExtension for .NET。似乎它们与 2013 版本保持同步。但不确定是否可以回答在 Explorer.exe 中显示为驱动器的问题(AFAIK。它不能显示为驱动器号)
【讨论】: