Предположим, что UAC включен. Это не создает проблемы с этим выключенным.
У меня есть приложение на c # с функцией резервного копирования и восстановления, использующее SQL Server 2005 Express.
код для получения 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;
При резервном копировании БД создает файл backup.dat в папке ** C: \ ProgramData \ CompName \ AppName **, и при этом не возникает проблем с переносом из этого расположения в целевой каталог по выбору пользователей.
При восстановлении не возникает проблем с получением заархивированного каталога или файла, но при распаковке он переходит в папку ** C: \ Users \ Имя пользователя \ AppData \ Local \ VirtualStore \ ProgramData \ CompName \ AppName **
Мне нужно знать, почему мой распакованный файл отправляется в виртуальное хранилище, чтобы я мог восстановить базу данных, потому что, насколько я понимаю, программирование для Vista SQL Server не должно / не сможет получить доступ к этому пути виртуального хранилища.
edit: не удалось выполнить декомпрессию - я не думаю, что это проблема, но вот она.
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