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