2009-03-18 9 views

答えて

2

実際にはわかりませんが、次のチャンネル9ビデオがあります。

Windows Vista "Time Warp": Understanding Vista's Backup and Restore Technologies

いくつかの実装の詳細とAPIの構造についてのビットがあります。私は、シャドウコピーがどのようにファイルシステムにマップされているかを述べたことを覚えていると思います。

2

あなたはファイルハンドルの共有タイプを指定することができます最初のプロセスの制御を持っている場合は

string contents1; 
string contents2; 
using (FileStream fs1 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
{ 
    using (var tr1 = new StreamReader(fs1)) 
    { 
     using (FileStream fs2 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
     { 
      using (var tr2 = new StreamReader(fs2)) 
      { 
       contents2 = tr2.ReadToEnd(); 
       contents1 = tr1.ReadToEnd(); 
      } 
     } 
    } 
} 

Console.WriteLine(contents1); 
Console.WriteLine(contents2); 
+0

私は、ファイルをロックしているプロセスを制御できません。 – Malfist

9

私の答えはあなたに多くの使用であってもよいが、SO Qされていない可能性がありますので、この質問は、すでにかなり古いです&サイトはおそらく他の人を助けるかもしれません。あなたがのためにボリュームシャドウサービスプロバイダを経由して、ボリュームシャドウコピーを作成

  1. 私は/実装全体を鎮圧したくないことはできませんが、手順がある。このような何かを行きますドライブを探してください(これはMSDNに詳しく記載されています。また、これらのシャドウコピーを作成するサンプルクライアントがあり、これで十分でしょう)。

  2. 永続的なものを作成するか、 「コールバック」メカニズム(アプリ呼び出し)

  3. オープンUNCパスとのCreateFileを経由して目的のファイル(UNCは、このようなものになります? \\ \ GLOBALROOT \デバイス\ HarddiskVolumeShadowCopyXZY \ yourpathの\のyourfile.yourextensionを)

  4. は、ファイル

    でやりたいです
  5. あなたが永続的なVSCをした場合は、ここで

詳細終わった後、あなたはそれを削除するには、サンプルのクライアントを使用する必要があります。http://technet.microsoft.com/en-us/library/cc785914%28WS.10%29.aspx 、ここで:http://msdn.microsoft.com/en-us/library/bb968832%28VS.85%29.aspx

+2

問題は、.NETのビルトインファイル管理ツールは\\?\ GlobalRootディレクティブにアクセスできないことです。あなたは実際にwinapiレベルに落とす必要があります。 AlphaFSSというライブラリがありますが、いくつかの大きな問題があります。私はしばらくそれを使用していましたが、ファイルサイズの問題に遭遇しました。両方のDWORDがサイズを表現するのに必要でした.AlphaFSSは下位のDWORDしか読みません。 – Malfist

関連する問題