阅读:1878回复:7
文件禁止访问输入密码框问题
我在sfcreate里进行设置Irp->IoStatus.Status = STATUS_ACCESS_DENIED拒绝特定文件.
想在点击文件后提示输入密码,应用层显示密码输入框.如果密码验证正确,则再执行刚才的文件操作. 但是用STATUS_ACCESS_DENIED拒绝IRP会有"拒绝访问的提示框". 请问各位大虾怎么可以做到没有这个提示框并且拒绝此IRP. |
|
最新喜欢:![]() |
沙发#
发布于:2007-06-25 10:19
Ring3必须有常驻的应用程序,或者DLL~
|
|
|
板凳#
发布于:2007-06-25 13:00
我有常驻的应用程序.
现在的问题是我拒绝此IRP会有一个"访问拒绝"的提示框,因为这个框是系统报出来的.干扰了我弹出的密码输入框.现在不想让这个系统弹出的框出现. 还有是不是我的方式有问题,不能拒绝IRP,而要改成取消此IRP,或别的方式. 现在比较困惑,请高手指点. |
|
地板#
发布于:2007-06-26 12:35
当驱动发现指定文件有打开请求时,驱动通知上层应用进行用户校验,
然后驱动进入等待状态,等待上层应用的校验,最后把校验成功或失败 的结果告诉驱动,然后驱动根据结果或是禁止或是放行。 |
|
|
地下室#
发布于:2007-06-26 16:33
devia大哥能不能给个代码的实例呢?
|
|
5楼#
发布于:2007-06-29 00:12
非常谢谢devia 的指导,再问一下,我单击一个文件和双击一个文件irpSp->Parameters.Create.Options都是FILE_OPEN,怎么才能区分呢?
|
|
6楼#
发布于:2007-06-29 09:12
引用第5楼fanziee于2007-06-29 00:12发表的 : 区分这个那得写Windows Shell 的COM插件 |
|
|
7楼#
发布于:2007-07-03 16:33
对于这个问题 在驱动里面先返回pending
1:驱动通知application 显示输入密码的提示 2:驱动创建一个workthread和一个event 对象,在workthread里面等待这个 对象, 3:application 使用device io control code 通知驱动, 传递给驱动用户的密码 4:驱动得到密码后setevent 通知workthread 开始检测是不是正确的 5:<1>如果正确就打开文件了 5: <2>不正确,这个时候才能complete 这个irp 并且设成denied。 不知道对不对啊呵呵 我没有写过呢 过一段时间我才开始写代码呵呵 版主见笑了啊 |
|