UAC がオンであると仮定します。オフにしても問題ありません。
バックアップ/復元機能を備え、SQL Server 2005 Express を使用する ac# アプリがあります。
backupPath を取得するコードは、バックアップと復元の両方に使用され、すべての目的の名前は backup.dat になります。
バックアップパスを生成する
string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
path = Path.Combine(path, "CompName");
if(!Directory.Exists(path))
Directory.CreateDirectory(path);
path = Path.Combine(path, "AppName");
if(!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
バックアップ時に、db は **C:\ProgramData\CompName\AppName** に backup.dat を生成し、その場所からユーザーが選択したターゲット ディレクトリに簡単に圧縮できます。
復元時には、アーカイブされたディレクトリまたはファイルを問題なく取得できますが、解凍すると **C:\Users\UserName\AppData\Local\VirtualStore\ProgramData\CompName\AppName** に移動します
vista sqlサーバーのプログラミングについて理解していることから、その仮想ストアパスにアクセスできない/アクセスできないため、解凍したファイルが仮想ストアに移動する理由を知る必要があります。
編集:解凍の提供に失敗しました-これは問題ではないと思いますが、ここにあります。
private void DecompressArchiveFile(string compressedFile, string backupPath)
{
GZipStream gzip = new GZipStream(new FileStream(compressedFile, FileMode.Open, FileAccess.Read, FileShare.None), CompressionMode.Decompress, false);
FileStream fs = new FileStream(backupPath, FileMode.Create, FileAccess.Write, FileShare.None);
byte[] buffer = new byte[10000];
int count = -1;
while (count != 0)
{
count = gzip.Read(buffer, 0, 10000);
fs.Write(buffer, 0, count);
}
gzip.Close();
fs.Close();
}
助けてくれてありがとう -TK