当用户删除某文件/文件夹时,能截获信息并弹出窗口提示并终止该操作! 如果谁有较好的方法或源码,请寄:[email protected]如果分数不够,我将另开贴加分。谢谢各位! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://vchelp.163.net/source/filemonsrc.zip好象可以监视文件系统的使用情况,拿回去研究一下吧。当中应该用到了钩子 To ahphone(根号6.0):我找到类似的东东,但那只是“事后监督”,即已经删除后才知道用户在删文件。我需要在用户让系统删除文件时,但系统尚未删除之前阻止这一行为。还望各位高手多多指教,分不够我可以另开贴来加。谢谢! HOOK(金山糍粑获得特定得目录名)再处理 可以使用 MS 提供的 Detours,截获系统中 DeleteFile()和SHFileOperation() api 的调用,应该可以了把 To gboy(hello):请问:哪有 Detours ?如何用? 截获自己程序调用的 MessageBoxA如果要借或其他程序,必须要写成 dll,然后把 dll 植入目标进程#include "stdafx.h"#include <windows.h>#include <detours.h>DETOUR_TRAMPOLINE(int WINAPI trampoline_MyFun( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType), MessageBoxA) int WINAPI MyFunDetour(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType){ printf("MessageBox:\n\--------------------\n\Caption:%s \n\--------------------\n\Message:%s\n\--------------------\n",lpCaption,lpText); int ret=trampoline_MyFun(hWnd, lpText, "captionfdsakljfd;kls",uType); // call ԭʼº¯Êý printf("================================ \n"); return ret;}int main(int argc, char* argv[]){ DetourFunctionWithTrampoline((PBYTE)trampoline_MyFun,(PBYTE)MyFunDetour); MessageBoxA(NULL,"hello,messagebox","Test",MB_OK); DetourRemove((PBYTE)trampoline_MyFun,(PBYTE)MyFunDetour); return 0;} http://research.microsoft.com/sn/detours可以下载文档和例子 这个问题俺没搞过,只是了解一些很多杀毒软件就是拦截了系统的API达到目的的。所以你要阻止别人删除文件,应该拦截DeleteFile函数,去看看http://www.vckbase.com/faq/system/1.htm另外一个办法是用HOOK Mouse Keyboard消息。只能拦截用户鼠标右键删除和键盘delete但是不能拦截程序删除 好像有本书叫windows shell编程的可以解决这个问题你可以看看的。 To leojay(leojay) :请问哪有这样的书?To lhj(努力加油) :我这就去找。To gboy(hello) :谢谢。我先研究一下。To Chice_wxg(我怕谁?我是谁!我是流氓我最贼。) :不知能否提供例程,源代码。 当用户删除某文件夹时,此时会触发一个shell接口,到www.codeproject.com上有个SHELL指南,CSDN大本营有中文翻译,你可以在这个接口中不让用户删除,也可提示,但删除文件提示,好像用到IFS,SYS internal有个例子,不过好像是个IFS例子呀!,这个不太清楚,祝你好运。 做一个shell的钩子!vc专家有一个kblauch的例子 TRY BHO or Shell extension 谢谢 vcmfc, SYS internal 的产品中有个 FileMon , 我用过,但我不知道该程序中所截获的大量信息中,哪个才是意味着用户在删除文件?不知哪位高手可否指点一二?(www.sysinternals.com)对IFS我可不懂得。前两天我收到一位网友来信,附件中有个ShellExt,可该DLL只能截获删除文件夹时的信息。对于文件不行。在MSDN中我也没有找到用于文件的。各位可否将源代码发给我?([email protected]) http://www.applevb.com/art/undoc3.htm上面的文章介绍的包括对删除文件以及文件夹的监控,不过代码是VB的,你可以修改为VC的,另外就是你可以利用Execute Hook实现对文件操作的监控。 谢谢 lhj(努力加油)、 gboy(hello) :我正测试。To TechnoFantasy(www.applevb.com):我认为那篇文章所述仍是“事后记录”,不能在物理删除(或删到回收站)前阻拦。我没用过Execute Hook,如何实现?哪位网友用过sysinternals (www.sysinternals.com)的 FileMon ?望告知其监视的信息中哪个(些)意味着用户在删除文件(夹)。谢谢! 不知哪些朋友用过sysinternals 的 FileMon, 该程序用了VxD技术,还请指教?对于Hook API,我试过,但对用 Del 内部命令就无法了,而且就算是在Windows 的浏览器中进行删除 ( 不使用 del 命令)也无法激活监控程序。 只有当某个程序真正调用了相关 API 函数如 DeleteFileA/W 时才成功。不知各位是否有真正能实现文件监控的办法,难道只有用 VxD ?可是对于 FileMon 却给出大量的内部信息,让人分不出哪个(些)才是意味着用户在删除,真是伤脑筋啊。Help!!! 我已经搞定了。做了个 VXD ,在Win 9x 下没问题,针对各企业客户一般很少用 Win NT/2000/XP的情况,我想这大概够了吧。真没想到用 VToolsD 写 VXD 还是不复杂,倒是在 Win NT/2000/XP 下用 DDK写.SYS 还不能搞定。而且对那些 IRP_MJ_??? 我看了就头痛!讨论到此为止,对这些问题的更多信息,可以在www.DriverDevelop.com上看到。非常感谢大家! mfc+ffmpeg做播放器,窗口大小改变时出现的奇异现象 在单文档视图中,如何实现图像和文本的选中显示 .X文件 关于浩方、VS对战平台的原理 怎样使得SDI程序要么处于最大化状态,要么处于最小化状态,我已经设为初始化最大 0xA7,0x58,0x59 这些标识是什么? 哪个API可以得到本机域的信息? 关于对话框程序的一点疑问 贪吃蛇 关于串口通信管脚设置 为什么我的程序关闭后总出现错误窗口? 一个有关IE的问题
好象可以监视文件系统的使用情况,拿回去研究一下吧。当中应该用到了钩子
我找到类似的东东,但那只是“事后监督”,即已经删除后才知道用户在删文件。我需要在用户让系统删除文件时,但系统尚未删除之前阻止这一行为。还望各位高手多多指教,分不够我可以另开贴来加。谢谢!
截获系统中 DeleteFile()和SHFileOperation() api 的调用,应该可以了把
哪有 Detours ?如何用?
#include <detours.h>
DETOUR_TRAMPOLINE(int WINAPI trampoline_MyFun(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType),
MessageBoxA) int WINAPI MyFunDetour(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
printf("MessageBox:\n\
--------------------\n\
Caption:%s \n\
--------------------\n\
Message:%s\n\
--------------------\n",lpCaption,lpText);
int ret=trampoline_MyFun(hWnd, lpText, "captionfdsakljfd;kls",uType); // call ԭʼº¯Êý
printf("================================ \n");
return ret;
}int main(int argc, char* argv[])
{
DetourFunctionWithTrampoline((PBYTE)trampoline_MyFun,(PBYTE)MyFunDetour);
MessageBoxA(NULL,"hello,messagebox","Test",MB_OK);
DetourRemove((PBYTE)trampoline_MyFun,(PBYTE)MyFunDetour);
return 0;
}
可以下载文档和例子
所以你要阻止别人删除文件,应该拦截DeleteFile函数,去看看
http://www.vckbase.com/faq/system/1.htm
另外一个办法是用HOOK Mouse Keyboard消息。
只能拦截用户鼠标右键删除和键盘delete但是不能拦截程序删除
请问哪有这样的书?To lhj(努力加油) :
我这就去找。To gboy(hello) :
谢谢。我先研究一下。To Chice_wxg(我怕谁?我是谁!我是流氓我最贼。) :
不知能否提供例程,源代码。
上面的文章介绍的包括对删除文件以及文件夹的监控,不过代码是VB的,你可以修改为VC的,另外就是你可以利用Execute Hook实现对文件操作的监控。
我正测试。To TechnoFantasy(www.applevb.com):
我认为那篇文章所述仍是“事后记录”,不能在物理删除(或删到回收站)前阻拦。我没用过Execute Hook,如何实现?哪位网友用过sysinternals (www.sysinternals.com)的 FileMon ?望告知其监视的信息中哪个(些)意味着用户在删除文件(夹)。谢谢!
的浏览器中进行删除 ( 不使用 del 命令)也无法激活监控程序。 只有当某个程序真正调用了相关 API 函数如 DeleteFileA/W 时才成功。不知各位是否有真正能实现文件监控的办法,难道只有用 VxD ?
可是对于 FileMon 却给出大量的内部信息,让人分不出哪个(些)才是意味着用户在删除,真是伤脑筋啊。Help!!!
做了个 VXD ,在Win 9x 下没问题,针对各企业客户一般很少用 Win NT/2000/XP
的情况,我想这大概够了吧。真没想到用 VToolsD 写 VXD 还是不复杂,倒是在 Win NT/2000/XP 下用 DDK写
.SYS 还不能搞定。而且对那些 IRP_MJ_??? 我看了就头痛!讨论到此为止,对这些问题的更多信息,可以在
www.DriverDevelop.com
上看到。非常感谢大家!