I'm trying to backup files on a server, but some of them are in use and cannot be opened. Instead, I'd like to open their shadow copy if the current copy is in use. How can I do this?
For reference, I'm using C# .net 3.5.
Windows operating system allows you to access the 'Shadow Copies' by right-clicking on the file/folder/drive, choosing 'Properties' and then 'Previous Versions'.
Click Restore my files. Click Browse for files or Browse for folders. Select the items that you want to back up, and then click Next. Select the destination path, and then click Restore.
Right-click the parent folder with the file you want to restore and select the Properties option. Click the Previous Versions tab. Under the “File versions” section, you will find a list of the different times where a shadow copy was created that allows you to recover a file (or folder). Select the content.
This question is quite old already, so my answer might not be of much use to you, but SO being a Q&A site maybe it still helps someone else.
I can't / don't want to put down the entire implementation, but the procedure is goes something like this:
You create a Volume Shadow Copy via the Volume Shadow Service Provider for the drive where your file to be read is located(this is well documented on MSDN, also there is a sample client that creates these shadow copies and will most likely be sufficient for you)
Either make a persistent one, or use the "callback" mechanism (calls your app)
Open the desired file via UNC paths and CreateFile (the UNC looks something like this: \\?\GlobalRoot\Devices\HarddiskVolumeShadowCopyXZY\yourpath\yourfile.yourextension)
Do whatever you want with the file
more info here: http://technet.microsoft.com/en-us/library/cc785914%28WS.10%29.aspx and here: http://msdn.microsoft.com/en-us/library/bb968832%28VS.85%29.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With