Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2035回复:13

文件的写的权限问题!

楼主#
更多 发布于:2003-06-28 15:42
当一个文件在一个程序里已经打开了,能不能在驱动里面(也就是kernel mode)对其进行写操作,或者更名的操作?或者把他删除,用另外的文件代替他?
认认真真过一生
wangmqi
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2008-12-24
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-29 12:50
在98下是可以的,使用中断21的文件操作!
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-29 12:59
那要看文件在那个程序中是以什么方式打开的,如果是share read share write应该是可以的
不限容量的免费邮箱 www.k65.net
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-29 20:04
在98下是可以的,使用中断21的文件操作!


能不能详细点?
认认真真过一生
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-29 20:05
那要看文件在那个程序中是以什么方式打开的,如果是share read share write应该是可以的


应该不是这样的吧,如果我要强行打开他呢?
认认真真过一生
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-30 21:26
如果已打开,你独占打开会失败的。此时改名也会失败的(推测:因为改名/删除都需要独占找开,否则返回错误)。
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-01 08:57
如果已打开,你独占打开会失败的。此时改名也会失败的(推测:因为改名/删除都需要独占找开,否则返回错误)。



难道就没有解决的办法?

  :( :( :(
认认真真过一生
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-01 09:01
举个例子:WinWord不就是在.doc文件打开的时候,将.tmp文件rename 为.doc的吗?他是如何实现的?
认认真真过一生
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-01 09:56
word是在保存的时候才rename.它也独占打开成功了。不信你写个程序,一直打开word文档,你再用word打开,修改后保存试一下。


老兄多动手试一下,难道要别人帮你试???
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-01 22:15
word是在保存的时候才rename.它也独占打开成功了。不信你写个程序,一直打开word文档,你再用word打开,修改后保存试一下。


老兄多动手试一下,难道要别人帮你试???


按照老兄的方法试了试,是可以的,

并且,当Word打开某个文件(a.doc),然后在驱动里面rename另外一个文件到这个文件(a.doc)的操作,成功了一半,
用filemon看,rename返回是success,但是word提示文件出错,a.doc消失,不知道为什么?
认认真真过一生
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
10楼#
发布于:2003-07-01 22:30
因该是可以的,我用文件虚拟硬盘,发现如果以SHARE方式,可以在多台机器上共享服务器上的文件,而且,在一台机器上打开的文件,可以在另一台机器被删除,互相没影响,见鬼了
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-02 19:32

API:CreateFile有FILE_SHARE_DELETE
ZwCreateFile有 FILE_SHARE_DELETE
SupermiLG
驱动牛犊
驱动牛犊
  • 注册日期2003-01-28
  • 最后登录2006-02-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-20 23:56
其实使用拦截该文件的IRP,从中提出FileObject,然后在你的驱动力使用这个FileObject进行读写。这样不管是不是share打开 ,还是独占打开,都读写无阻
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-07-21 09:46
楼上说的是对的。

我想大家都没有理解这位楼主的意思。


我估计楼主在解决动态加解密的问题。你这问题的解法是很特殊。

直接引用fileobject来处理读写,的确是不用考虑,我当时分实时备份也用这各这种方法。不过要看情况。
游客

返回顶部