What are the API calls to copy a file that is currently locked. I’m hoping to be able to use .Net, but Win32 calls would be fine as well.
Please feel free to chime in about the same functionality on Unix, or any other OS.
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You can use the VSS (Volume Shadow Copy Service, not Visual SourceSafe) API for this purpose. While powerful, this isn’t exactly an easy-to-use API: the Overview of Processing a Backup Under VSS should give you an idea what’s involved.
Even though it’s a relatively recent API, .NET support for VSS is pretty much (and inexcusably) nonexistent. You can’t call most of the API through Interop, and the Framework file functions won’t work with the kernel namespace VSS uses to expose the snapshotted files. As a bonus, there are horrendous 32/64-bit and XP-vs-Vista issues, making deployment exciting as well (the responsible team at Microsoft should be really proud!)
Anyway, the AlphaVSS project intends to bring full VSS functionality to .NET, and looks extremely promising, even though it’s still in pre-beta stage. It might just do the trick for you, though, and it’s open source (Managed C++).
For a good example of how to do things using Win32, see HoboCopy. The utility is quite useful on its own, and full C++ source is available from the SourceForge project page as well.