阅读:1444回复:8
遇到问题,过来人能指点一下。
这个问题是我在开发中未注意到的,问题如下:
如下: 对于一个数据文件,用以下代码来保护文件打开是没有问题,但对于一个.exe,好像是不行,why? 我试了多种情形,好像都不行,能过来人指点一下。 //先将该操作传递给文件系统处理 status = CallFileSystemDriver(pDevObj, Irp); if(!NT_SUCCESS(status)) return status; //审查该操作是否合法? nLegal = IsUserOperateLegal(pDevObj, Irp, &FileName, USER_ACTION_CREATE_OPEN_FILE); if(nLegal == ACTION_DENIED) { KdPrint((\"Kfilter Debug: IRP_MJ_CREATE File Name=%ws, Operator is ACTION_DENIED.\\n\", FileName.Buffer)); KdPrint((\"Kfilter Debug: IsUserOperateLegal return %d.\\n\", nLegal)); //对该文件操作不被授权,操作非法 Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; } // KdPrint((\"----------------------------Kfilter:IRP_MJ_CREATE ------------end---------------\\n\")); //返回上层调用 IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS; |
|
最新喜欢:![]() |
沙发#
发布于:2003-02-12 09:32
呵呵!如果你的写处理过滤也是这样的话,那么肯定会有问题的!
|
|
板凳#
发布于:2003-02-11 17:00
找到了,好高兴呀!!!!
原因:一般的file打开,第一个与第二次都一样,所以我的代码正常,可.exe,不知道资源管理器是如何处理,前三次都一样,后两次跟前三次不一样,且有些属性不见了,tmd. 谢谢coolice的提醒,太感谢你了。 |
|
地板#
发布于:2003-02-11 16:15
我在跟踪看一下。
|
|
地下室#
发布于:2003-02-11 16:14
我已放在前面了,如果是以数据文件打开,且没有问题,但通过资源管理器打开,在DriverMoniter显示打开拒绝,但exe还是给打开了,为什么???
新代码如下: //审查该文件是否需要替换文件名(转移)? int nLegal = IsUserOperateLegal(pDevObj, Irp, &FileName, USER_ACTION_REDIRECT_FILE); if( nLegal == ACTION_PASS) return KfPassThrough(pDevObj, Irp); //审查该操作是否合法? nLegal = IsUserOperateLegal(pDevObj, Irp, &FileName, USER_ACTION_CREATE_OPEN_FILE); //先将该操作传递给文件系统处理 status = CallFileSystemDriver(pDevObj, Irp); if(!NT_SUCCESS(status)) return status; if(nLegal == ACTION_DENIED) { KdPrint((\"Kfilter Debug: IRP_MJ_CREATE File Name=%ws, Operator is ACTION_DENIED.\\n\", FileName.Buffer)); //对该文件操作不被授权,操作非法 Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS;//STATUS_ACCESS_DENIED;//STATUS_SUCCESS; } //返回上层调用 IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS; |
|
5楼#
发布于:2003-02-11 15:22
Tom_lyd说得没错,IsUserOperateLegal必须放在最前面,另外有些exe运行时会用短文件名打开,确认一下有没有漏掉Create
|
|
6楼#
发布于:2003-02-11 14:43
coolice,sjjun,lu0,指点俺一下呀!!!!
挺急的。 |
|
7楼#
发布于:2003-02-11 14:11
不行, 我试过了,对于exe,好像不起作用,真TMD的怪,我记得我以前行呀!!!!
我在看看。 |
|
8楼#
发布于:2003-02-11 14:04
先进行合法性检查再传给低层驱动程序不行吗?
|
|
|