什么是API调用来复制当前锁定的文件.我希望能够使用.Net,但Win32调用也没问题.
请随意在Unix或任何其他操作系统上使用相同的功能.
您可以使用VSS(卷影复制服务,而不是Visual SourceSafe)API来实现此目的.虽然功能强大,但这并不是一个易于使用的API:在VSS下处理备份概述可以让您了解所涉及的内容.
虽然它是一个相对较新的API,但对VSS的.NET支持几乎(并且不可原谅地)不存在.您无法通过Interop调用大多数API,并且Framework文件函数将无法与VSS用于公开快照文件的内核命名空间一起使用.作为奖励,有可怕的32/64位和XP-vs-Vista问题,部署也令人兴奋(微软的负责团队应该感到非常自豪!)
无论如何,AlphaVSS项目打算为.NET带来完整的VSS功能,看起来非常有前景,尽管它还处于测试前阶段.它可能只是为你做的,它是开源的(Managed C++).
有关如何使用Win32执行操作的一个很好的示例,请参阅HoboCopy.该实用程序本身非常有用,并且SourceForge项目页面也提供了完整的C++源代码.
几乎与我对另一个问题的回答相同:
如果您使用的是Win32,那么正式的方法是将其标记为在重新启动时移动,并要求用户重新启动.为了纪念在重新启动要移动的文件,请使用MoveFileEx
与MOVEFILE_DELAY_UNTIL_REBOOT
标志.
它是相同的功能,只是这次你没有传递NULL作为目的地.