1

Outlookを開いた状態でc#を使用してpstファイルをコピーすることは可能ですか?

ここに私がすでに持っているコードがありますが、それでもエラーが表示されます:別のプロセスで使用されているため、プロセスはファイル 'filepath'にアクセスできません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace outlookPSTCopy
{
class Program
{
    static void Main(string[] args)
    {
        string done = "the file is done copying";//done massage
        string copyFrom = args[0];
        string copyTo = args[1];
        Console.WriteLine(copyTo);
        Console.ReadLine();
        try
        {
            //start of test
            using (var inputFile = File.Open(copyFrom, FileMode.Open,    FileAccess.ReadWrite, FileShare.Read))
            {
                using (var outputFile = new FileStream(copyTo, FileMode.Create))
                {
                    var buffer = new byte[0x10000];
                    int bytes;

                    while ((bytes = inputFile.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        outputFile.Write(buffer, 0, bytes);
                    }
                }
            }



            //end of test

            //System.IO.File.Copy(copyFrom, copyTo, true);
        }
        catch (Exception copyError)
        {

            Console.WriteLine("{0} Second exception caught.", copyError);
        }

        Console.WriteLine("{0} ", done);


        Console.ReadLine();
    }
}
}

ご協力ありがとうございました!

4

1 に答える 1

1

Windows で別のプロセスによってロックされているファイルのコピーを作成するには、最も簡単な (そしておそらく唯一の) 解決策は、ボリューム シャドウ コピー サービス (VSS) を使用することです。

ボリューム シャドウ コピー サービスは複雑で、マネージ コードから呼び出すのは困難です。幸いなことに、これを行うための .NET クラス ライブラリが、何人かの優秀な人物によって作成されました。CodePlexのAlpha VSSプロジェクトを確認してください: http://alphavss.codeplex.com

于 2013-07-08T23:31:42.330 に答える