我做了块保存和另存为文件名使用微过滤器驱动的解决方案。
保存阻止是可以的,但我不能通过文件名阻止另存为。
我希望从IRP_MJ_WRITE上的'PFLT_CALLBACK_DATA‘或'PFLT_CALLBACK_DATA’得到原名。
当我执行“另存为”时,如何在minifilter中获取引用的原始文件名?
发布于 2020-07-17 23:13:51
无法直接获取原始文件名,但您可以尝试下面的方法。
一旦进程读取了原始文件,该进程在终止之前无法写入任何文件。
用户模式下的
- Find [Save as] dialog byHWND hWnd = ::FindWindow("#32770",“另存为”);
类名为'ToolbarWindow32‘的窗口的
- Enumerate sub windows and check class name and get original file path from their window name.文本包含原始文件的父目录路径。
类名为“Edit”的窗口的文本包含原始文件的名称。
- Cancel [Save As] dialog by::PostMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDCANCEL,BN_CLICKED),NULL);
https://stackoverflow.com/questions/62929463
复制相似问题