AlphaVSS 0.7.0 Released

AlphaVSS provides a managed .NET interface to the Windows Volume Shadow Copy Service, making it possible to conveniently access and use the VSS API from within eg. C# or VB.

New in this release is the support for Windows XP as well as Windows Vista (and later). To compile against Windows XP, you must use the VSS SDK 7.2 headers and libraries. If these libraries are installed to their default location, the project files in the source distribution should work as is, otherwise you may need to update the paths in these configurations.  To compile for Windows Vista or later you should use the Windows SDK v6.1 libraries and headers.

Unfortunately this means there is one DLL for windows XP and one for windows vista. The managed interface is the same, although not all functionality is supported in Windows XP, so some functions simply throw NotSupportedException. This is covered in the API documentation, available in both the source and the binary distribution.

Apart from the Windows XP support, many changes were made to the interface and documentation, too many to list here.

The 0.7.0 release will likely be the last alpha release as the interface has now stabilized. The next release will probably be a beta version.

You can download the binary or source distribution of AlphaVSS 0.7.0 on the download page.

Don’t forget to check out the invaluable companion to AlphaVSS, AlphaFS, which provides convenient file access to these strange //?/GLOBALROOT/… style paths from .NET, along with a number of additional features. All wrapped in an interface very similar to that of System.IO.

If you find bugs, or have feature requests please submit a new ticket at the trac. Any other general comments are more than welcome on this page.

You can also retrieve the latest source from the subversion repository, available at

kick it on


  1. Can I ask for your help. I need an example in c# showing how to just copy one file to another file in the same directory using the latest release of vss. I need to use this api because the file will be locked. Thanks in advance.

    I tried looking at the help files with the download but there is no text displayed inside the chm. Getting a web reference error.

  2. John, I will look into this business of dynamically loading the DLL’s as well when I find the time to put another work effort into this. Main priority first is to get it compatible with all different versions of windows and so on. I’m not sure if just using the same name will help, since when released they will be strongly named and probably will need to have different names anyway. But that’s just speculation for now, as I said, I will definately look into this as well.

    Please direct any further discussions about AlphaVSS to its new home on CodePlex though, and if you find any bugs there, just create a new work item on the issue tracker or post in the discussion boards there.

    Sorry for the late reply btw.

  3. Ok, anyone have any ideas on this theory …

    I currently compile against the AlphaVSSwXPd.dll. At run time, i’d like to switch to use the AlphaVSSw06d.dll if needed . Currently this is not possible since the Assemblied have different names internally ie “AlphaVSSwXP” and “AlphaVSSw06” . My experiments tell me that if the Internal Assembly name was “AlphaVSS” in both DLL, then they would become interchangeable at runtime.

    Can anyone easily recompile the XP and Vista dll’s with matching Assembly names ? I’d love to know before I venture into setting up my own C++ DEv environment.

    Cheers guys …. this is one of the greatest projects on the net !!!

  4. Execllent, I have this working and copying all sorts of in use files.

    My question is, how to write one EXE that references either one of the appropriate DLLs. I thought about dynamically chagning the DLL that is shipped but the Assembly knows its name should be w06d or xXPd . So by trying to swap the DLL out, it does not seem to work…

    Any ideas, or just have two version of EXE ?


  5. Hi folks,

    I’m very sorry in advance for bugging you, but I need some help with the shadow copy in C++ (or why not in .NET if this soluce could work).

    I’m trying to write my own code for saving and restoring files on WinXP. My apps is writers unaware. When I use the StartSnapshotSet and the AddToSnapshotset methods, the snapshotset id and the snapshot id remain empty… Does someone know why?

    My goal is to create a generic dll for using it almost anywhere. Is it possible in .NET instead of C++?

    Thanks in advance for all help

  6. Have not used this yet, but with the additions of sample app’s and I would look at doing a simple volume copy, and maybe an example of a specific writer as well, I would think interest would go way up.

    You might want to do a CodeProject, that would spread the word pretty good if you had a nice exaple app

    Nice work from what I can see

  7. I’ve had this problem, you need to use Windows SDK v6.1 to compile cleanly, with Windows SDK v6.0A (what comes with VS2008) I got these errors

  8. Hi

    Got a little problem. Im not very used to C++ coding (been a while), so I tried your precompiled binaries.
    I develop on a Vista machine, and there it works fine, but when running the program on a Win2003SP2 och Server2008 i receive Tonys first error “A procedure imported by ‘AlpahVSS…”

    I tried to compile it myself, by changeing the vista release config, and changed the NTDDI_VERSION and _WIN32_WINNT, but then I just got errors in the compilationprocess….

Comments are closed.