CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

高手请进,如何使一个类型的文件拒绝访问

楼主reagoo()2006-03-03 14:40:23 在 Delphi / Windows SDK/API 提问

如何用delphi编程实现锁定文件类型,比如,.doc文件,当用户想打开时,提示“拒绝访问”等信息,最好有实例,请高手指教。 问题点数:50、回复次数:22Top

1 楼sdzeng(大头鸟)回复于 2006-03-03 16:08:00 得分 0

procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
          f   :   HFILE;  
          s   :   TOfStruct;  
  begin  
          s.cBytes   :=   SizeOf(s);  
          s.fFixedDisk   :=   0;  
          strpcopy(s.szPathName,'E:\a.txt');  
          f   :=   OpenFile('E:\a.txt',s,OF_SHARE_EXCLUSIVE);  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
          f   :   THandle;  
          sa   :   TSecurityAttributes;  
  begin  
          FillChar(sa,   SizeOf(sa),   #0);  
          sa.nLength   :=   SizeOf(sa);  
          sa.lpSecurityDescriptor   :=   nil;  
          sa.bInheritHandle   :=   True;  
          f   :=   CreateFile('E:\a.txt',   GENERIC_READ   or   GENERIC_WRITE,  
                  0,   @sa,   OPEN_EXISTING,  
                  FILE_ATTRIBUTE_Normal,   0);  
          //CloseHandle(f);关闭文件,允许其他程序访问  
  end;  
  Top

2 楼sdzeng(大头鸟)回复于 2006-03-03 16:14:17 得分 0

第一个例子再加上  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
          f   :   HFILE;  
          s   :   TOfStruct;  
  begin  
          s.cBytes   :=   SizeOf(s);  
          s.fFixedDisk   :=   0;  
          strpcopy(s.szPathName,'E:\a.txt');  
          f   :=   OpenFile('E:\a.txt',s,OF_SHARE_EXCLUSIVE);  
          //_lclose(f);关闭文件,允许其他程序访问  
  end;  
   
  晕,没仔细看  
  你要所有的一类文件都不能打开啊,  
  上面例子只能独占打开一个文件  
  Top

3 楼reagoo()回复于 2006-03-03 16:48:58 得分 0

对,是一种类型的文件。也就是说当其他程序访问之前就要截获文件信息,判断是否是指定的文件类型,如果是则拒绝访问。Top

4 楼reagoo()回复于 2006-03-06 11:53:23 得分 0

怎么了?难道这里的高手们也解决不了这个问题Top

5 楼sdzeng(大头鸟)回复于 2006-03-06 15:10:24 得分 0

这种情况可以试试API   Hook,  
  首先得知道打开文件时用的什么API  
  比如ShellExcute或者Createfile,Openfile什么的  
  然后用API   Hook监视API调用,在Hook里判断是否允许打开Top

6 楼reagoo()回复于 2006-03-08 15:09:03 得分 0

大哥,具体应该怎么做?   这方面小弟没怎么接触过?Top

7 楼reagoo()回复于 2006-03-13 12:20:22 得分 0

高手门,帮帮忙啊Top

8 楼sdzeng(大头鸟)回复于 2006-03-13 17:35:25 得分 0

API   Hook方面的资料很多,去网上搜  
   
  不过你这种需求和反病毒引擎比较像,估计API   Hook也不一定能很好解决,  
  去找找IFS   hook、文件系统过滤驱动(File   System   Filter   Drivers)方面的资料  
   
  功力不够,帮不了你了  
  Top

9 楼reagoo()回复于 2006-03-14 11:19:41 得分 0

那也要先谢谢你,sdzeng兄.  
   
  其他大侠请不吝赐教啊!Top

10 楼apple800(老五)回复于 2006-03-19 12:59:13 得分 0

学习Top

11 楼BlueTrees(蜗牛)回复于 2006-03-19 13:42:48 得分 0

告诉你一个结果  
   
  你要的办法,在应用层是做不到的,使用HookAPI是比较麻烦的。你的功力现在绝对不够你操纵这么复杂的方式。  
   
  你放弃吧。  
   
  还有一种办法,就是2楼那样的,你把所有的这种类型的文件都打开。Top

12 楼reagoo()回复于 2006-03-20 14:07:12 得分 0

真的没有其他办法了吗?  
  Top

13 楼darkhawlk(黑鹰)回复于 2006-03-21 11:30:43 得分 0

关注中Top

14 楼reagoo()回复于 2006-03-23 12:25:30 得分 0

提一下Top

15 楼reagoo()回复于 2006-03-31 09:04:14 得分 0

再提一下Top

16 楼lxtnt()回复于 2006-04-03 23:09:19 得分 0

像OF_SHARE_EXCLUSIVE这样想以独占方式占有文件的使用权,在98以下的也许可以,但NT以上的就:小文件几十KB的文件是可以,但大文件就行不通了!  
      只是想:用流或用文件读取(只写方式)文件的数据,无论多少由你定哦!再看一下哦原文件哦!Top

17 楼wuhansen()回复于 2006-04-08 22:12:21 得分 0

不用那么麻烦吧  
  把文件关联指向你的程序(程序弹出拒绝访问,嘿嘿)  
  恢复时候把关联改回去不就完了Top

18 楼lxtnt()回复于 2006-04-08 22:27:55 得分 0

不用那么麻烦吧  
  把文件关联指向你的程序(程序弹出拒绝访问,嘿嘿)  
  恢复时候把关联改回去不就完了  
  ___________________________________________________  
  当有其它程序,  
  把文件关联指向它的程序(程序弹出拒绝访问,嘿嘿)  
  恢复时候它不把关联改回去不就完了,不就完了,哈哈哈。。。。。Top

19 楼yanxizhen(颜夕真)回复于 2006-04-10 17:10:10 得分 0

跳跳,ring   0.........  
  Top

20 楼myy()回复于 2006-04-10 17:23:08 得分 0

不用那么麻烦吧  
  把文件关联指向你的程序(程序弹出拒绝访问,嘿嘿)  
  恢复时候把关联改回去不就完了  
  ___________________________________________________  
   
  人家从菜单“文件”->“打开”...Top

21 楼sdzeng(大头鸟)回复于 2006-04-10 18:13:21 得分 0

建议你去驱网看看,挺不错的一个论坛  
  http://bbs.zndev.com/thread.php?fid-39.html  
  Top

22 楼un(我想我是马)回复于 2006-04-11 16:45:39 得分 0

把文件加壳Top

相关问题

  • 访问文件被拒绝
  • 临时文件夹拒绝访问
  • webservice读写文件拒绝访问
  • 读一个文件提示对文件的访问被拒绝
  • 读一个文件提示对文件的访问被拒绝
  • 如何限制IIS访问的文件类型?
  • 拒绝访问的本该可以访问的共享文件夹的问题!!!!
  • windows2003下 批量修改拒绝访问文件问题 紧急~!!
  • 调试web services 中的访问文件被拒绝的问题
  • 复制文件,“拒绝访问”,是怎么回事?

关键词

  • 文件
  • sa
  • api
  • 程序
  • 拒绝访问
  • 访问
  • 高手
  • 类型
  • 麻烦吧把文件关联
  • 打开

得分解答快速导航

  • 帖主:reagoo

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo