如何拷贝被WINDOWS NT 锁住的文件。。。(200分)

  • 主题发起人 主题发起人 六窍通
  • 开始时间 开始时间

六窍通

Unregistered / Unconfirmed
GUEST, unregistred user!
如何拷贝被WINDOWS NT 锁住的文件,例如:PAGEFILE。SYS
 
一般读写这种文件有对应的专门的函数的, 比如读写日志文件用
eventlog类函数等.

直接读写很复杂, 要用到获取读写token和共享读写权限token等, 还要
等待解锁和读写锁定. 如果只是想得到这个文件, 那可以直接在
dos/windows 95/98/2000下copy对应的文件就可以了.
在Windows 95/98下有读取ntfs的软件的.
 
no way while NT is running:-(
 
重要的是获取读写权限,文件安全性
 
那么server pack是如何拷贝那么多系统文件的????
 
我猜:

很多系统文件并没有当时就覆盖原有的文件,而是先放到一个临时的目录,然后
用修改autoexec.bat类似的技术,来实现下次开机时,在还没有加载系统文件
的情况下拷贝上去的,要不为什么系统一升级总要重新启动机器呢?
当然,人家可能不是用的修改autoexec.bat这么弱的方法,我记得cytown隐约
提过在win.ini里面修改什么就可以做到. 不过原理应该差不多
 
他是把所有的服务都卸了,但我不清楚如何替换象 kenerl之类的东西
 
>>他是把所有的服务都卸了
不大可能,如果人家机器上开着WEB服务,也能随便就给卸了?? 不太可能.
 
问题的原意:我要完成一项备份任务,但要备份的数据被一个SERVICE锁住,无法COPY,我又不能停止SERVICE。
我知道SEAGATE有一个备份软件,可以备份被其他应用缩定的文件,所以做是一定
可以作的。请各位发表高见。
 
用MoveFileEx 实现
 
你想复制的是什么文件?

用获取文件权限的办法是肯定可以的, 创建高权限的安全token,
获取读写文件的token就可以了
 
没办法的。
安装程序如果要替换那些正在使用的文件,不是要你“重启动”吗,
在重启动时替换那些文件。

使用的 api 是 MoveFileEx ,
使用参数 MOVEFILE_DELAY_UNTIL_REBOOT 和 MOVEFILE_REPLACE_EXISTING
函数执行后 nt增加注册表项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/PendingFileRenameOperations
自己去看看吧, 此api只在nt有效。win9x是使用一个ini文件
 
多人接受答案了。
 
后退
顶部