I am working on a project that utilizes the Microsoft VSS (Volume Shadow Copy) service to take a snapshot of a selected drive volume. If you don't know what this is, stop reading at this point.
The VSS is a rather complex system that is really designed to be implemented with C based programming. What little documentation there is, is rather obscure. AND I am not a C programmer. I am trying to develop a vb.net or c#.net project that utilizes a C wrapper that follows the rules laid out below and I can create an interface and call the routines I need from the wrapper.
1) Takes a snapshot
2) Grabs the snapshot (\\?\GLOBALDEVICE\etc) and takes all of the data in the snapshot and creates a DISK IMAGE (.img, etc) of all of the data and moves it to another drive. THIS INCLUDES PROTECTED AND LOCKED FILES
3) Imagine what Acronis Trueimage does
4) At a later point, another full OR differential snapshot would be taken to quiesce the data, snapshot the differences and determine what has been changed, and then backup that data as a differential backup.
5) I have gotten a lot of resources (AlphaVSS, Hobocopy) etc, but I just don't have the ability to overcome the issue of file security/permissions and locked files to create the backup.
So, what I need is a set of routines that are written in either vb.net or c# that utilize a C wrapper that calls the appropriate routines to create and backup a FULL DISK. It must be a complete backup that can be restored through a BartPE or WinPE boot disk.
I need someone who is pretty competent in C to utilize the resources available to piece together a set of routines I can call through .NET to perform the above functions.
It must be able to take full and differential backups and store them into a file. File compression option with gzip (or something with similar compression ratio/speed) would be a necessity as well, but as mentioned, it needs to be an option, not a mandatory feature.
Lastly. Pay attention to the fact that we are dealing with operating systems ranging from Windows XP/2003/Vista/Win7/Win2k8, BOTH x86 and x64 must be operable.
It would be nice if we could do Win2000 but it is not a requirement if it is that much more difficult.