阅读:2035回复:13
文件的写的权限问题!
当一个文件在一个程序里已经打开了,能不能在驱动里面(也就是kernel mode)对其进行写操作,或者更名的操作?或者把他删除,用另外的文件代替他?
|
|
|
沙发#
发布于:2003-06-29 12:50
在98下是可以的,使用中断21的文件操作!
|
|
板凳#
发布于:2003-06-29 12:59
那要看文件在那个程序中是以什么方式打开的,如果是share read share write应该是可以的
|
|
|
地板#
发布于:2003-06-29 20:04
在98下是可以的,使用中断21的文件操作! 能不能详细点? |
|
|
地下室#
发布于:2003-06-29 20:05
那要看文件在那个程序中是以什么方式打开的,如果是share read share write应该是可以的 应该不是这样的吧,如果我要强行打开他呢? |
|
|
5楼#
发布于:2003-06-30 21:26
如果已打开,你独占打开会失败的。此时改名也会失败的(推测:因为改名/删除都需要独占找开,否则返回错误)。
|
|
6楼#
发布于:2003-07-01 08:57
如果已打开,你独占打开会失败的。此时改名也会失败的(推测:因为改名/删除都需要独占找开,否则返回错误)。 难道就没有解决的办法? :( :( :( |
|
|
7楼#
发布于:2003-07-01 09:01
举个例子:WinWord不就是在.doc文件打开的时候,将.tmp文件rename 为.doc的吗?他是如何实现的?
|
|
|
8楼#
发布于:2003-07-01 09:56
word是在保存的时候才rename.它也独占打开成功了。不信你写个程序,一直打开word文档,你再用word打开,修改后保存试一下。
老兄多动手试一下,难道要别人帮你试??? |
|
9楼#
发布于:2003-07-01 22:15
word是在保存的时候才rename.它也独占打开成功了。不信你写个程序,一直打开word文档,你再用word打开,修改后保存试一下。 按照老兄的方法试了试,是可以的, 并且,当Word打开某个文件(a.doc),然后在驱动里面rename另外一个文件到这个文件(a.doc)的操作,成功了一半, 用filemon看,rename返回是success,但是word提示文件出错,a.doc消失,不知道为什么? |
|
|
10楼#
发布于:2003-07-01 22:30
因该是可以的,我用文件虚拟硬盘,发现如果以SHARE方式,可以在多台机器上共享服务器上的文件,而且,在一台机器上打开的文件,可以在另一台机器被删除,互相没影响,见鬼了
|
|
|
11楼#
发布于:2003-07-02 19:32
API:CreateFile有FILE_SHARE_DELETE ZwCreateFile有 FILE_SHARE_DELETE |
|
12楼#
发布于:2003-07-20 23:56
其实使用拦截该文件的IRP,从中提出FileObject,然后在你的驱动力使用这个FileObject进行读写。这样不管是不是share打开 ,还是独占打开,都读写无阻
|
|
13楼#
发布于:2003-07-21 09:46
楼上说的是对的。
我想大家都没有理解这位楼主的意思。 我估计楼主在解决动态加解密的问题。你这问题的解法是很特殊。 直接引用fileobject来处理读写,的确是不用考虑,我当时分实时备份也用这各这种方法。不过要看情况。 |
|