首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我执行“另存为”时,如何在minifilter中获取引用的原始文件名?

当我执行“另存为”时,如何在minifilter中获取引用的原始文件名?
EN

Stack Overflow用户
提问于 2020-07-16 15:17:19
回答 1查看 83关注 0票数 1

我做了块保存和另存为文件名使用微过滤器驱动的解决方案。

保存阻止是可以的,但我不能通过文件名阻止另存为。

我希望从IRP_MJ_WRITE上的'PFLT_CALLBACK_DATA‘或'PFLT_CALLBACK_DATA’得到原名。

当我执行“另存为”时,如何在minifilter中获取引用的原始文件名?

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 23:13:51

无法直接获取原始文件名,但您可以尝试下面的方法。

  1. 跟踪每个进程的原始文件的IRP_MJ_READ。

一旦进程读取了原始文件,该进程在终止之前无法写入任何文件。

用户模式下的

  1. 监视器另存为对话框,如下所示。

代码语言:javascript
复制
- Find [Save as] dialog by

HWND hWnd = ::FindWindow("#32770",“另存为”);

类名为'ToolbarWindow32‘的窗口的

代码语言:javascript
复制
- Enumerate sub windows and check class name and get  original file path from their window name.

文本包含原始文件的父目录路径。

类名为“Edit”的窗口的文本包含原始文件的名称。

代码语言:javascript
复制
- Cancel [Save As] dialog by

::PostMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDCANCEL,BN_CLICKED),NULL);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62929463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档