C#“注入”驱动器到Windows资源管理器

时间:2013-06-24 13:50:19

标签: c# code-injection explorer virtual-drive

有没有办法将驱动器“注入”资源管理器? 我想要实现的目标: 打开资源管理器时,应该有一个看起来像HDD或网络驱动器的正常分区的驱动器(唯一的区别:没有容量信息(如果可能),并且具有不同的图标)。它不需要任何IO逻辑,我唯一需要的是在点击它时采取行动。 当它被点击时,应该出现一个插入密码的弹出窗口,如果密码正确,我想删除假驱动器,挂载网络驱动器并打开网络驱动器的根目录(基本上用户甚至没有注意到它是一个虚假的驱动器,因为看起来他解锁了网络驱动器并打开了它)

的问候, 隐藏

2 个答案:

答案 0 :(得分:2)

对于那些没有任何不良意图并回答主要问题的人:

是的,有一种方法可以使用Win32 API“注入”虚拟驱动器:

    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    private static extern bool DefineDosDevice(
        int dwFlags,
        string lpDeviceName,
        string lpTargetPath);

答案 1 :(得分:1)

更好的选择是创建一个虚拟驱动器,准备好显示信息,但只能在其根目录打开并输入密码之后。在Windows上,这可以使用例如我们的CBFS Connect产品来完成;在Linux和macOS上,可以分别使用FUSE和“ Fuse for macOS”来完成。也就是说,您可以使用代码公开文件系统数据。

如果要挂载网络驱动器(通过SMB / Windows网络)来代替已创建的虚拟驱动器,则比较麻烦-您可以主动挂载网络磁盘,但可以使用文件系统过滤器驱动程序来阻止对网络磁盘,直到进行访问(例如通过Explorer)并输入密码为止。使用我们的其他产品CBFS筛选器可以做到这一点。

这两种方法的特定实现都非常复杂,可以使用简单的代码段进行说明。