Windows资源管理器和重新分析点文件:防止资源管理器打开我的文件

时间:2015-05-28 21:19:23

标签: windows explorer shell-extensions

我实现了用户模式程序和Windows文件系统minifilter,它为远程文件存储系统创建用户文件的框架视图。它将远程文件映射到本地驱动器。用户模式程序为远程系统上的每个文件创建重新分析标记。当检测到创建请求(例如,用于读取的CreateFile)时,微过滤器要求用户模式程序下载文件。这应该仅在程序要打开文件以供查看或编辑时才会发生。

但是,我发现Windows资源管理器正在触发我的文件下载。我想阻止Explorer文件窗口和文件打开/保存对话框 触发下载。而且,我还想显示文件缩略图和文件 尺寸。

  

[更新:我发现我可以使用Windows稀疏文件来显示我的遥控器   Explorer中的文件大小。 ]

因此,我还实现了一个Shell扩展,IThumbnailProvider,用于下载文件的再现。这提供了文件缩略图。

对于我的测试,我已经为所有文件(*)和.jpg文件注册了IThumbnailProvider。

我使用Process Monitor和DebugView(都来自SysInternals)的组合看到了两个有趣的行为: 1.如果我让minifilter拒绝从Explorer打开文件的请求,则调用我的IThumbnailProvider。 2.如果我允许来自资源管理器的打开请求,我会在调用堆栈中看到thumbcache.dll尝试打开该文件而我的IThumbnailProvider未被调用。似乎默认缩略图提供程序读取下载的文件并创建缩略图。

我一定错过了什么。

更新:如果我使用InitializeWithStream而不是InitializeWithFile,则会调用我的处理程序。但是,这也会触发文件的下载。

1 个答案:

答案 0 :(得分:0)

有许多shell扩展类型可以访问您的文件。图标处理程序可以读取文件创建图标,Info tip处理程序可以读取文件创建文本提示,Data对象处理程序可以读取文件创建剪贴板数据等。

具有相同问题的开发人员提出的问题:firstsecond。解决方案是创建命名空间shell扩展。 NSE可以控制对文件的所有访问。