阅读:2362回复:5
vxd中的文件保护--还是不行
各位高手,我在测试ifshook时,防止DEL可以,但防止打开还是不行。
按以下: case IFSFN_OPEN : BOOL IS=IsMyFile();//伪代码 if(IS){ pir->ir_error=DWORD(5); //ir_Error=表示没错!!!!! return(5); } else { p=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir); return (p); } ......... 哈哈,还是要蓝屏! 请各位指点 补充:我是用98DDK编译的 [flyfox 编辑于 2001-06-08 11:05] |
|
|
沙发#
发布于:2001-06-11 20:51
肯定是伪码的实现有问题.
|
|
|
板凳#
发布于:2001-06-12 08:49
我的代码大致如下:请多指教。
char FileNm[400]; …… case IFSFN_OPEN: if(AlreadyInside==1 || Init==1) { break; } AlreadyInside=1; if((nDrive & 0xFF) != 0xFF){ FileNm[0]= nDrive + '@'; FileNm[1]=':'; iLen=2; iLen+=UniToBCSPath(&FileNm[2], pir->ir_ppath->pp_elements, MAX_PATH, BCS_OEM); } else{ iLen=FormNetPath(FileNm, pir); } if(iLen>=0){ FileNm[iLen]=0; iLen++; } iRet=IsMyFile(FileNm); if(iRet) { pir->ir_error=5; return(5); // AlreadyInside=0; // return 1; Out_Debug_String("open yet\n\r"); } else { p=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir); return (p); } …… //case…… //定义IsMyFile int IsMyFile(char *FileNm) { if(strstr(FileNm,"TEST.TXT"))return 1; else return 0; } |
|
|
地板#
发布于:2001-06-15 20:13
老兄能否把你的 防del的那部分帖上来看看
|
|
|
地下室#
发布于:2001-06-16 08:31
防DEL即是直接return 0;
如下: case IFSFN_DELETE: if(AlreadyInside==1 || Init==1) break; AlreadyInside=1; if((nDrive & 0xFF) != 0xFF){ FileNm[0]= nDrive + '@'; FileNm[1]=':'; iLen=2; iLen+=UniToBCSPath(&FileNm[2], pir->ir_ppath->pp_elements, MAX_PATH, BCS_OEM); } else{ iLen=FormNetPath(FileNm, pir); } if(iLen>=0){ FileNm[iLen]=0; iLen++; } iRet=IsMyFile(FileNm); if(iRet)return 0; |
|
|
5楼#
发布于:2001-06-20 19:24
IFSFN_DELETE
好象不能处理 del 的消息,文件一样会被删到回收站中,这其间会收到一个 IFSFN_RENAM 消息,如果同时按住 SHIFT 键才会收到 IFSFN_DELETE 消息。 |
|
|