<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>AlphaVSS - Bringing Windows Volume Shadow Copy Service (VSS) to .NET</title><link>http://alphavss.codeplex.com/project/feeds/rss</link><description>AlphaVSS is a .NET class library written in C&amp;#43;&amp;#43;&amp;#47;CLI aiming to provide a managed interface to the Windows Volume Shadow Copy Service &amp;#40;VSS&amp;#41; API. The goal is to provide an interface that is simple to use from a C&amp;#35; or VB.NET application, yet provides the full functionality of VSS.</description><item><title>New Post: Visual Studio Compatibility</title><link>http://alphavss.codeplex.com/discussions/336786</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I'm having problem opeing the AlphaVSS.sln solution file with Visual C#/C&amp;#43;&amp;#43; Express 2010. I'm suing version 1.2 (.Net 4.0) bu t it gives me solution folder error. It also compalins about .vcporj file. I've 2010 express and Visual studio 2008&amp;nbsp; Professional.
 Which version of source code&amp;nbsp;would be best for my config. Any work around for 2010 express. Thanks.&lt;/p&gt;
&lt;/div&gt;</description><author>pro99</author><pubDate>Tue, 21 Feb 2012 15:45:09 GMT</pubDate><guid isPermaLink="false">New Post: Visual Studio Compatibility 20120221034509P</guid></item><item><title>Closed Task: Add missing documentation (XML Doc Comments) [17358]</title><link>http://alphavss.codeplex.com/workitem/17358</link><description>&lt;br /&gt;Comments: Resolved with changeset 86120.</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 19:31:32 GMT</pubDate><guid isPermaLink="false">Closed Task: Add missing documentation (XML Doc Comments) [17358] 20120206073132P</guid></item><item><title>Source code checked in, #86120</title><link>http://alphavss.codeplex.com/SourceControl/changeset/changes/86120</link><description>Added some missing XmlDoc comments.&amp;#13;&amp;#10;Removed method QueryRevertStatus since the asynchronous versions seemed to be the only ones that made sense.</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 19:31:30 GMT</pubDate><guid isPermaLink="false">Source code checked in, #86120 20120206073130P</guid></item><item><title>New Post: Crash on X64 :(</title><link>http://alphavss.codeplex.com/discussions/282590</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Seems strange that it is the x86 binary that gets loaded since this will likely not work on an X64 platform. Is there anything that you can think of that makes your application run as a 32-bit app?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;// Decaf&lt;/p&gt;&lt;/div&gt;</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 19:06:20 GMT</pubDate><guid isPermaLink="false">New Post: Crash on X64 :( 20120206070620P</guid></item><item><title>New Post: Win2008 R2 - LoadImplementation Fails</title><link>http://alphavss.codeplex.com/discussions/283735</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hard to say without more information. Are your executable and all the AlphaVSS binaries located in the same directory?&lt;/p&gt;
&lt;p&gt;// Decaf&lt;/p&gt;&lt;/div&gt;</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 19:04:01 GMT</pubDate><guid isPermaLink="false">New Post: Win2008 R2 - LoadImplementation Fails 20120206070401P</guid></item><item><title>Created Task: Delay-signing causes many problems for developers and should be removed. [17360]</title><link>http://alphavss.codeplex.com/workitem/17360</link><description>Delay-signing makes it overly complicated to build this already complicated project in terms of building.&lt;br /&gt;The benefits are&amp;#160;quite limited and perhaps even questionable. &lt;br /&gt;To ensure that binaries originate from the proper location a code signing certificate should be used, since strong-naming is not sufficient for this purpose.&lt;br /&gt;So provide an SNK with the public&amp;#47;private keypair to use for signing, possibly use another one for &amp;#34;official releases&amp;#34;, although this seems sort of redundant as well.&lt;br /&gt;</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 19:02:04 GMT</pubDate><guid isPermaLink="false">Created Task: Delay-signing causes many problems for developers and should be removed. [17360] 20120206070204P</guid></item><item><title>Created Task: Run code analysis and fix any issues reported. [17359]</title><link>http://alphavss.codeplex.com/workitem/17359</link><description>&lt;br /&gt;</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 18:58:29 GMT</pubDate><guid isPermaLink="false">Created Task: Run code analysis and fix any issues reported. [17359] 20120206065829P</guid></item><item><title>Created Task: Add missing documentation (XML Doc Comments) [17358]</title><link>http://alphavss.codeplex.com/workitem/17358</link><description>&lt;br /&gt;</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 18:57:43 GMT</pubDate><guid isPermaLink="false">Created Task: Add missing documentation (XML Doc Comments) [17358] 20120206065743P</guid></item><item><title>Commented Task: Sample application needed [8328]</title><link>http://alphavss.codeplex.com/workitem/8328</link><description>A small sample application demonstrating some basic usage of AlphaVSS would be really beneficial and should be added.&lt;br /&gt;Comments: Associated with changeset 86119.</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 18:55:56 GMT</pubDate><guid isPermaLink="false">Commented Task: Sample application needed [8328] 20120206065556P</guid></item><item><title>Source code checked in, #86119</title><link>http://alphavss.codeplex.com/SourceControl/changeset/changes/86119</link><description>- Added new sample application AlphaShadow with many features demonstrated. &amp;#13;&amp;#10;- Many other minor and in some cases more major and breaking changes.&amp;#13;&amp;#10;- See ChangeLog.txt for more details.</description><author>decaf</author><pubDate>Mon, 06 Feb 2012 18:55:54 GMT</pubDate><guid isPermaLink="false">Source code checked in, #86119 20120206065554P</guid></item><item><title>New Post: exchange last backup date</title><link>http://alphavss.codeplex.com/discussions/283888</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;hi&lt;/p&gt;
&lt;p&gt;how can I get last full backup date and last incremental backup date using alpha vss (C#)?&lt;/p&gt;
&lt;p&gt;please advise&lt;/p&gt;
&lt;/div&gt;</description><author>AnGor</author><pubDate>Thu, 22 Dec 2011 12:36:19 GMT</pubDate><guid isPermaLink="false">New Post: exchange last backup date 20111222123619P</guid></item><item><title>New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One</title><link>http://alphavss.codeplex.com/discussions/282589</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Using AlphaVSS you can list the volumes using Alphaleonis.Filesystem.Volume.GetVolumes and GetVolumePathNamesForVolume&lt;/p&gt;
&lt;p&gt;To emulate "vssadmin list shadows", generally it's like this:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;Using&lt;/span&gt; y = CreateVssBackupComponents()
  y.InitializeForBackup(&lt;span style="color: blue;"&gt;Nothing&lt;/span&gt;)
  y.SetContext(Vss.VssSnapshotContext.&lt;span style="color: blue;"&gt;All&lt;/span&gt;)
  &lt;span style="color: blue;"&gt;For&lt;/span&gt; &lt;span style="color: blue;"&gt;Each&lt;/span&gt; z &lt;span style="color: blue;"&gt;In&lt;/span&gt; y.QuerySnapshots()
    &lt;span style="color: green;"&gt;'match z.OriginalVolumeName against the proper&lt;/span&gt;
    &lt;span style="color: green;"&gt;'  volume name matched in the GetVolumes command&lt;/span&gt;
    &lt;span style="color: green;"&gt;'store the z.SnapshotDeviceObject string to use later&lt;/span&gt;
  &lt;span style="color: blue;"&gt;Next&lt;/span&gt;
&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Using&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Using AlphaFS you can manipulate and open files on these volumes. &amp;nbsp;I would simply list updated files based on a newer date stamp, but if you need byte-accuracy, you can open a data stream and compare the data within the .NET framework.&lt;/p&gt;
&lt;p&gt;For high-speed data compare operations, you can use the following access to the Win32 API:&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;Declare&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;/span&gt; IsArrayDifferent &lt;span style="color: blue;"&gt;Lib&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"msvcrt.dll"&lt;/span&gt; &lt;span style="color: blue;"&gt;Alias&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"memcmp"&lt;/span&gt; (&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; byteArray1() &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; byteArray2() &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; bytesToCompare &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt;) &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Of course, it would be best if it was wrapped in a "safe" function to automatically determine the bytes to compare, and immediately return false if either array Is Nothing, or if the length of the arrays are different.&lt;/p&gt;
&lt;p&gt;Shane&lt;/p&gt;&lt;/div&gt;</description><author>Shane32</author><pubDate>Wed, 21 Dec 2011 23:08:25 GMT</pubDate><guid isPermaLink="false">New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One 20111221110825P</guid></item><item><title>New Post: Win2008 R2 - LoadImplementation Fails</title><link>http://alphavss.codeplex.com/discussions/283735</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I've got a Windows2008 R2 server, with Microsoft Visual C&amp;#43;&amp;#43; 2010 Redistributable installed on it.&lt;/p&gt;
&lt;p&gt;I keep getting&amp;nbsp;&lt;span&gt;FileLoadException: Could not load file or assembly 'AlphaVSS.60.x64.dll' or one of its dependencies, when calling&amp;nbsp;VssUtils.LoadImplementation()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What am I missing here?&lt;/p&gt;
&lt;/div&gt;</description><author>Chanand</author><pubDate>Wed, 21 Dec 2011 13:33:22 GMT</pubDate><guid isPermaLink="false">New Post: Win2008 R2 - LoadImplementation Fails 20111221013322P</guid></item><item><title>New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One</title><link>http://alphavss.codeplex.com/discussions/282589</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I finally decided to go ahead and start coding. Please make suggestions for speeding up the code or what do with files that are found to be different from the recovery file target. Is there a simpler way to do this with AlphaVSS and AlphaFS?&lt;/p&gt;
&lt;pre class="lang-vb prettyprint"&gt;&lt;code&gt;&lt;span class="kwd"&gt;&lt;div style="color: black; background-color: white;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Button1_Click_2(sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Object, e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color: blue;"&gt;Handles&lt;/span&gt; Button1.Click

    &lt;span style="color: green;"&gt;'Find out the number of vss shadow snapshots (restore &lt;br /&gt;    'points). &lt;/span&gt;&lt;span style="color: green;"&gt;All shadows apparently have a linkable path &lt;br /&gt;    '\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy#,&lt;/span&gt;
    &lt;span style="color: green;"&gt;'where # is a simple one or two or three digit integer.&lt;/span&gt;
    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; objProcess &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Process()
    objProcess.StartInfo.UseShellExecute = &lt;span style="color: blue;"&gt;False&lt;/span&gt;
    objProcess.StartInfo.RedirectStandardOutput = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
    objProcess.StartInfo.CreateNoWindow = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
    objProcess.StartInfo.RedirectStandardError = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
    objProcess.StartInfo.FileName() = &lt;span style="color: #a31515;"&gt;"vssadmin"&lt;/span&gt;
    objProcess.StartInfo.Arguments() = &lt;span style="color: #a31515;"&gt;"List Shadows"&lt;/span&gt;
    objProcess.Start()

    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; burp &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = objProcess.StandardOutput.ReadToEnd
    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; strError &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = objProcess.StandardError.ReadToEnd()
    objProcess.WaitForExit()
    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; xnum &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt; = 0
    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; counterVariable &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt; = 1
    &lt;span style="color: green;"&gt;' Call Regex.Matches method.&lt;/span&gt;
    &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; matches &lt;span style="color: blue;"&gt;As&lt;/span&gt; MatchCollection = Regex.Matches(burp, _&lt;br /&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="white-space: pre;"&gt;			&lt;/span&gt;"HarddiskVolumeShadowCopy"&lt;/span&gt;)
    &lt;span style="color: green;"&gt;' Loop over matches.&lt;/span&gt;
    &lt;span style="color: blue;"&gt;For&lt;/span&gt; &lt;span style="color: blue;"&gt;Each&lt;/span&gt; m &lt;span style="color: blue;"&gt;As&lt;/span&gt; Match &lt;span style="color: blue;"&gt;In&lt;/span&gt; matches
        xnum = xnum + 1
    &lt;span style="color: green;"&gt;'When it has reached it's maximum value, xnum + 1 &lt;/span&gt;
    &lt;span style="color: green;"&gt;'is finally the number of existing shadow snapshots.&lt;/span&gt;
    &lt;span style="color: blue;"&gt;Next&lt;/span&gt;
    objProcess.Close()

    &lt;span style="color: blue;"&gt;Do&lt;/span&gt;
        &lt;span style="color: green;"&gt;'Here I make symbolic links to all the shadows, one at a time &lt;br /&gt;&lt;span style="white-space: pre;"&gt;	&lt;/span&gt;'and loop through until all shadows are exposed as folders in C:\.&lt;/span&gt;
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; myProcess &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Process()
        myProcess.StartInfo.FileName = &lt;span style="color: #a31515;"&gt;"cmd.exe"&lt;/span&gt;
        myProcess.StartInfo.UseShellExecute = &lt;span style="color: blue;"&gt;False&lt;/span&gt;
        myProcess.StartInfo.RedirectStandardInput = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        myProcess.StartInfo.RedirectStandardOutput = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        myProcess.StartInfo.CreateNoWindow = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        myProcess.Start()
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; myStreamWriter &lt;span style="color: blue;"&gt;As&lt;/span&gt; StreamWriter = myProcess.StandardInput
        myStreamWriter.WriteLine(&lt;span style="color: #a31515;"&gt;"mklink /d C:\shadow"&lt;/span&gt; &amp;amp; _counterVariable &amp;amp; _&lt;br /&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="white-space: pre;"&gt;		&lt;/span&gt;" \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy"&lt;/span&gt; &amp;amp; _&lt;br /&gt;&lt;span style="white-space: pre;"&gt;		&lt;/span&gt;counterVariable &amp;amp; &lt;span style="color: #a31515;"&gt;"\"&lt;/span&gt;)
        myStreamWriter.Close()
        myProcess.WaitForExit()
        myProcess.Close()

        &lt;span style="color: green;"&gt;' Here I compare our recovery target file against the shadow copies.&lt;/span&gt;
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; sFile &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = PathTb.Text
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; sFileShadowPath &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = &lt;span style="color: #a31515;"&gt;"C:\shadow"&lt;/span&gt; &amp;amp; counterVariable &amp;amp; _&lt;br /&gt;&lt;span style="white-space: pre;"&gt;					&lt;/span&gt;DelFromLeft(&lt;span style="color: #a31515;"&gt;"C:"&lt;/span&gt;, sFile)
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; jingle &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Process()
        jingle.StartInfo.FileName = &lt;span style="color: #a31515;"&gt;"cmd.exe"&lt;/span&gt;
        jingle.StartInfo.UseShellExecute = &lt;span style="color: blue;"&gt;False&lt;/span&gt;
        jingle.StartInfo.RedirectStandardInput = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        jingle.StartInfo.RedirectStandardOutput = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        jingle.StartInfo.CreateNoWindow = &lt;span style="color: blue;"&gt;True&lt;/span&gt;
        jingle.Start()
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; jingleWriter &lt;span style="color: blue;"&gt;As&lt;/span&gt; StreamWriter = jingle.StandardInput
        jingleWriter.WriteLine(&lt;span style="color: #a31515;"&gt;"fc """&lt;/span&gt; &amp;amp; sFile &amp;amp; &lt;span style="color: #a31515;"&gt;""" """&lt;/span&gt; &amp;amp; _&lt;br /&gt;&lt;span style="white-space: pre;"&gt;				&lt;/span&gt;sFileShadowPath &amp;amp; &lt;span style="color: #a31515;"&gt;""""&lt;/span&gt;)
        jingleWriter.Close()
        jingle.WaitForExit()
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; jingleReader &lt;span style="color: blue;"&gt;As&lt;/span&gt; StreamReader = jingle.StandardOutput
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; JingleCompOut &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = jingleReader.ReadToEnd
        jingleReader.Close()
        jingle.WaitForExit()
        jingle.Close()
        &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; jingleBoolean &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt; = JingleCompOut.Contains( _&lt;br /&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="white-space: pre;"&gt;			&lt;/span&gt;"not differences encountered"&lt;/span&gt;).ToString
        &lt;span style="color: blue;"&gt;If&lt;/span&gt; jingleBoolean = &lt;span style="color: #a31515;"&gt;"True"&lt;/span&gt; &lt;span style="color: blue;"&gt;Then&lt;/span&gt;
            MsgBox(jingleBoolean)
        &lt;span style="color: blue;"&gt;Else&lt;/span&gt;
            &lt;span style="color: green;"&gt;'I haven't decided what to do with the paths of &lt;br /&gt;&lt;span style="white-space: pre;"&gt;	&lt;/span&gt;    'files that are different from the recovery target.&lt;/span&gt;
            MsgBox(&lt;span style="color: #a31515;"&gt;"No"&lt;/span&gt;)
        &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;If&lt;/span&gt;

        counterVariable = counterVariable + 1
    &lt;span style="color: blue;"&gt;Loop&lt;/span&gt; &lt;span style="color: blue;"&gt;Until&lt;/span&gt; counterVariable = xnum + 1

&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><author>socrtwo22</author><pubDate>Wed, 14 Dec 2011 20:22:34 GMT</pubDate><guid isPermaLink="false">New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One 20111214082234P</guid></item><item><title>New Post: Exchange VSS Backup Copy?</title><link>http://alphavss.codeplex.com/discussions/282691</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Oops, I meant wrapping the COPYFILE function using DLLIMPORT (not PINVOKE), since this KERNEL32.DLL function is unmanaged code...&lt;/p&gt;&lt;/div&gt;</description><author>gregarican</author><pubDate>Mon, 12 Dec 2011 21:52:08 GMT</pubDate><guid isPermaLink="false">New Post: Exchange VSS Backup Copy? 20111212095208P</guid></item><item><title>New Post: Exchange VSS Backup Copy?</title><link>http://alphavss.codeplex.com/discussions/282691</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Using VSSADMIN I have found the Instance and Writer ID's for the Exchange 2003 Server VSS object. Two questions. Does anyone have any sample C# source for actually taking the backup? I'm assuming I need to wrap the COPYFILE function from the KERNEL32.DLL
 using PINVOKE, which I have done. I'm just having trouble working through some of the functionality in order to write the VSS backup to a local disk. Second question is that when I run VSSADMIN&amp;nbsp;LIST WRITERS on the Exchange 2003 Server I see that this
 VSS object is almost constantly stuck in State [5]: Waiting for completion. Any way around this? I don't want to keep rebooting the server, and I know that no other backup software is currently holding up the works...&lt;/p&gt;
&lt;/div&gt;</description><author>gregarican</author><pubDate>Mon, 12 Dec 2011 21:47:18 GMT</pubDate><guid isPermaLink="false">New Post: Exchange VSS Backup Copy? 20111212094718P</guid></item><item><title>New Post: Crash on X64 :(</title><link>http://alphavss.codeplex.com/discussions/282590</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hello&lt;/p&gt;
&lt;p&gt;I've a problem with X64 platform.&lt;/p&gt;
&lt;p&gt;-&amp;gt;Visual 2010&lt;/p&gt;
&lt;p&gt;-&amp;gt; dotnet 4.0&lt;/p&gt;
&lt;p&gt;-&amp;gt;VSS work fine on windows XP 32 bits (my dev plateform)&lt;/p&gt;
&lt;p&gt;-&amp;gt; Crash on windows 7 x64, (not dev platform, but framework 4 is installed, Package redistribuable Microsoft Visual&amp;nbsp;C&amp;#43;&amp;#43;&amp;nbsp;2010 (x86) and Package redistribuable Microsoft Visual&amp;nbsp;C&amp;#43;&amp;#43;&amp;nbsp;2010 (x64) are installed)&amp;nbsp; (he want to use AlphaVSS.60.x86.dll,
 normal?)&lt;/p&gt;
&lt;p&gt;Program is compil with &amp;quot;any cpu&amp;quot;&lt;/p&gt;
&lt;p&gt;my code:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.IO;

&lt;span style="color:blue"&gt;using&lt;/span&gt; Alphaleonis.Win32.Vss;

[DllImport(&lt;span style="color:#a31515"&gt;&amp;quot;kernel32.dll&amp;quot;&lt;/span&gt;, SetLastError = &lt;span style="color:blue"&gt;true&lt;/span&gt;, CharSet = CharSet.Auto)]
        &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;extern&lt;/span&gt; &lt;span style="color:blue"&gt;bool&lt;/span&gt; CopyFileEx(&lt;span style="color:blue"&gt;string&lt;/span&gt; lpExistingFileName, &lt;span style="color:blue"&gt;string&lt;/span&gt; lpNewFileName, CopyProgressRoutine lpProgressRoutine, &lt;span style="color:blue"&gt;int&lt;/span&gt; lpData, &lt;span style="color:blue"&gt;ref&lt;/span&gt; &lt;span style="color:blue"&gt;int&lt;/span&gt; pbCancel, &lt;span style="color:blue"&gt;uint&lt;/span&gt; dwCopyFlags);
        &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;delegate&lt;/span&gt; &lt;span style="color:blue"&gt;uint&lt;/span&gt; CopyProgressRoutine(&lt;span style="color:blue"&gt;long&lt;/span&gt; TotalFileSize, &lt;span style="color:blue"&gt;long&lt;/span&gt; TotalBytesTransferred, &lt;span style="color:blue"&gt;long&lt;/span&gt; StreamSize, &lt;span style="color:blue"&gt;long&lt;/span&gt; StreamBytesTransferred, &lt;span style="color:blue"&gt;uint&lt;/span&gt; dwStreamNumber, &lt;span style="color:blue"&gt;uint&lt;/span&gt; dwCallbackReason, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData);


  &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; CopyFile(&lt;span style="color:blue"&gt;string&lt;/span&gt; source, &lt;span style="color:blue"&gt;string&lt;/span&gt; destination)
        {
&lt;br&gt;
      &lt;span style="color:green"&gt;//     try&lt;/span&gt;
     &lt;span style="color:green"&gt;//       {&lt;/span&gt;
                &lt;span style="color:blue"&gt;var&lt;/span&gt; oVSSImpl = VssUtils.LoadImplementation();
           
                &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; vss = oVSSImpl.CreateVssBackupComponents())
                {
                    vss.InitializeForBackup(&lt;span style="color:blue"&gt;null&lt;/span&gt;);

                    vss.SetBackupState(&lt;span style="color:blue"&gt;false&lt;/span&gt;, &lt;span style="color:blue"&gt;true&lt;/span&gt;, VssBackupType.Full, &lt;span style="color:blue"&gt;false&lt;/span&gt;);

                    &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; async = vss.GatherWriterMetadata())
                        async.Wait();

                    vss.StartSnapshotSet();
                    &lt;span style="color:blue"&gt;string&lt;/span&gt; volume = &lt;span style="color:blue"&gt;new&lt;/span&gt; FileInfo(source).Directory.Root.Name;
                    &lt;span style="color:blue"&gt;var&lt;/span&gt; snapshot = vss.AddToSnapshotSet(volume, Guid.Empty);

                    &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; async = vss.PrepareForBackup())
                        async.Wait();

                    &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; async = vss.DoSnapshotSet())
                        async.Wait();

                    &lt;span style="color:blue"&gt;var&lt;/span&gt; props = vss.GetSnapshotProperties(snapshot);
                    &lt;span style="color:blue"&gt;string&lt;/span&gt; vssFile = source.Replace(volume, props.SnapshotDeviceObject &amp;#43; &lt;span style="color:#a31515"&gt;@&amp;quot;\&amp;quot;&lt;/span&gt;);

                    &lt;span style="color:blue"&gt;int&lt;/span&gt; cancel = 0;
                    CopyFileEx(vssFile, destination, &lt;span style="color:blue"&gt;null&lt;/span&gt;, 0, &lt;span style="color:blue"&gt;ref&lt;/span&gt; cancel, 0);
                   
                }
       &lt;span style="color:green"&gt;//    }&lt;/span&gt;
       &lt;span style="color:green"&gt;//     catch&lt;/span&gt;
       &lt;span style="color:green"&gt;//     {&lt;/span&gt;
       &lt;span style="color:green"&gt;//     }&lt;/span&gt;

        }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Have you an idea to help me ?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thanks&lt;/p&gt;
&lt;/div&gt;</description><author>robert592</author><pubDate>Mon, 12 Dec 2011 00:07:26 GMT</pubDate><guid isPermaLink="false">New Post: Crash on X64 :( 20111212120726A</guid></item><item><title>New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One</title><link>http://alphavss.codeplex.com/discussions/282589</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;This is a cross post from Stack Overflow, but I haven't gotten a response there yet.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'm writing an Excel file recovery program with VB.Net that tries to be a convenient place to gather and access&amp;nbsp;&lt;a rel="nofollow" href="http://office.microsoft.com/en-us/excel-help/repairing-a-corrupted-workbook-HA010097017.aspx?pid=CH100948241033"&gt;Microsoft's  recommended methods&lt;/a&gt;. If your interested in my probably kludgy, error filled, and lacking enough cleanup code it's here: &lt;a href="http://pastebin.com/v4GgDteY"&gt;http://pastebin.com/v4GgDteY&lt;/a&gt;. The basic functionality seems to work although I haven't tested graph macro table recovery yet.&lt;/p&gt;
&lt;p&gt;It occurred to me that Vista and Windows 7 users could benefit from being offered a list of previous versions of the file within my application if the Shadow Copy Service is on and there are previous copies. How do I do this?&lt;/p&gt;
&lt;p&gt;I looked at a lot of web pages but found no easy to crib code. One possibility I guess would be to use vssadmin via the shell but that is pretty cumbersome. I just want to display a dialogue box like the Previous Versions property sheet and allow users to  pick one of the previous versions. I guess I could just display the previous version property sheet via the shell or something but I also want to be able to offer the list for Vista Home Basic and Premium Users who don't have access to that tab even though  apparently the previous versions still exist and maybe even XP users the same functionality if that is possible although I'm pretty sure with XP only the System files are in the shadow copies.&lt;/p&gt;
&lt;p&gt;I looked at MSDN on the Shadow Copy Service and went through all the pages, I also looked at AlphaVSS and AlphaFS and all the comments. &amp;nbsp;I'm kind of guessing that I need to use&amp;nbsp;AlphaVss and AlphFS and do the following?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find out the list of snapshots/restore points that exist on the computer. &lt;/li&gt;
&lt;li&gt;Mount those snapshots. &lt;/li&gt;
&lt;li&gt;Navigate in the mounted volumes to the Excel file the user wants to recover and make a list of those paths. &lt;/li&gt;
&lt;li&gt;With the list of paths handy, compare with some kind of diff program, the shadow copies of the files with the original. &lt;/li&gt;
&lt;li&gt;Pull out the youngest or oldest version (I don't think it matters) of those shadow copies that differ from the recovery target. &lt;/li&gt;
&lt;li&gt;List those versions of the files that are found to be different. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This seems cumbersome and slow, but maybe is the fastest way to do things. I just need some confirmation that is the way to go now.&lt;/p&gt;&lt;/div&gt;</description><author>socrtwo22</author><pubDate>Sun, 11 Dec 2011 23:51:42 GMT</pubDate><guid isPermaLink="false">New Post: VB.Net: How To Display Previous Shadow Copy Versions of File Allowing User to Choose One 20111211115142P</guid></item><item><title>New Post: Exchange Transaction logs</title><link>http://alphavss.codeplex.com/discussions/279483</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hello everybody,&lt;/p&gt;
&lt;p&gt;I adapted the AlphaVSS VssBackup.cs sample and try&amp;nbsp;create a&amp;nbsp;backup of Microsoft Exchange Server.&lt;/p&gt;
&lt;p&gt;I use the VssBackup in component mode and added the exchange writer components. After the backup, I call the BackupSucceded method for each component.&lt;/p&gt;
&lt;p&gt;The problem is, that after the backup is performed the transaction logs don't get removed by the writer. Is there something else I should call for that? Has anyone else has a similar problem?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Paul&lt;/p&gt;
&lt;/div&gt;</description><author>kamesenin</author><pubDate>Tue, 15 Nov 2011 09:40:13 GMT</pubDate><guid isPermaLink="false">New Post: Exchange Transaction logs 20111115094013A</guid></item><item><title>New Post: LoadImplementation Fails</title><link>http://alphavss.codeplex.com/discussions/278036</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Hi Folks,&lt;/p&gt;
&lt;p&gt;I'm running Visual Studio 2010 Premium on a Windows 7 Home Premium Sp1 on a 64 bit Intel Core i7 machine.&lt;/p&gt;
&lt;p&gt;I have referenced the common dll from my project, and imported all the other dll's into the solution and set them to &amp;quot;copy to output folder&amp;quot; so that they are present in builds.&lt;/p&gt;
&lt;p&gt;I'm building my application with DEBUG and ANY CPU configuration.&lt;/p&gt;
&lt;p&gt;When my application runs the following line of code:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;IVssImplementation vssI = VssUtils.LoadImplementation();&lt;/p&gt;
&lt;p&gt;I get this error message:&lt;/p&gt;
&lt;p&gt;Could not load file or assembly 'AlphaVSS.60.x64.dll' or one of its dependencies. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for
 more detail. (Exception from HRESULT: 0x800736B1)&lt;/p&gt;
&lt;p&gt;I have checked to ensure that all the supporting DLL's (including the one it's complaining about) are present in the BIN folder of my application's build.&lt;/p&gt;
&lt;p&gt;Scouring through the crash dump, I get the following interesting results. &amp;nbsp;For some reason, it's looking in&amp;nbsp;D:\Coding\AlphaVSS\Release\1.1\Source\AlphaVSS.Common\Classes\ for vssUlts.cs (??)&lt;/p&gt;
&lt;p&gt;Any clues as to why this might be happening and the assembly is failing to load? &amp;nbsp;I'm stumped. &amp;nbsp;Thanks in advance for any help.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;System.IO.FileLoadException: Could not load file or assembly 'AlphaVSS.60.x64.dll' or one of its dependencies. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line
 sxstrace.exe tool for more detail. (Exception from HRESULT: 0x800736B1)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&amp;amp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.Reflection.Assembly.Load(AssemblyName assemblyRef)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;at Alphaleonis.Win32.Vss.VssUtils.LoadImplementation() in D:\Coding\AlphaVSS\Release\1.1\Source\AlphaVSS.Common\Classes\VssUtils.cs:line 119&lt;/p&gt;
&lt;/div&gt;</description><author>daphydthebard</author><pubDate>Wed, 02 Nov 2011 13:08:50 GMT</pubDate><guid isPermaLink="false">New Post: LoadImplementation Fails 20111102010850P</guid></item></channel></rss>
