有没有办法将驱动器“注入”资源管理器?我想要实现的目标:打开资源管理器时,应该有一个看起来像 HDD 或网络驱动器的普通分区的驱动器(唯一的区别:没有容量信息(如果可能),并且带有不同的图标)。它不需要任何 IO 逻辑,我唯一需要的是在单击它时采取行动。单击时会出现一个插入密码的弹出窗口,如果密码正确,我想删除假驱动器,挂载网络驱动器并打开网络驱动器的根目录(基本上用户甚至没有注意到它是一个假驱动器,因为看起来他解锁了网络驱动器并打开了)
问候,隐藏
有没有办法将驱动器“注入”资源管理器?我想要实现的目标:打开资源管理器时,应该有一个看起来像 HDD 或网络驱动器的普通分区的驱动器(唯一的区别:没有容量信息(如果可能),并且带有不同的图标)。它不需要任何 IO 逻辑,我唯一需要的是在单击它时采取行动。单击时会出现一个插入密码的弹出窗口,如果密码正确,我想删除假驱动器,挂载网络驱动器并打开网络驱动器的根目录(基本上用户甚至没有注意到它是一个假驱动器,因为看起来他解锁了网络驱动器并打开了)
问候,隐藏
对于那些没有任何恶意并回答主要问题的人:
是的,有一种方法可以使用 Win32 API “注入”虚拟驱动器:
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern bool DefineDosDevice(
int dwFlags,
string lpDeviceName,
string lpTargetPath);
更好的选择是创建一个虚拟驱动器,准备好显示信息,但只有在打开它的根目录并输入密码之后。在 Windows 上,这可以使用我们的 CBFS Connect 产品来实现,在 Linux 和 macOS 上,这可以分别使用 FUSE 和“Fuse for macOS”来完成。也就是说,如果您可以使用代码公开文件系统数据。
如果您想挂载网络驱动器(通过 SMB / Windows 网络)来代替您创建的虚拟驱动器,这会比较棘手 - 您可以主动挂载网络磁盘,但使用文件系统过滤器驱动程序来阻止对网络磁盘的访问直到进行访问(例如通过 Explorer)并输入密码。这可以使用我们的其他产品 CBFS 过滤器来实现。
这两种方法的特定实现都相当复杂,可以使用简单的代码片段来说明。