Здравствуйте,
Задача — копировать файлы из одной программы в другую. То бишь синхронизировать. Система Windows 7, которая при включенном UAC запрещает
запись, модификацию файлов в C:\Program Files.
Программа генерирует исключение Access Denied при перезаписи/создании папки. Вручную изменять права к папкам нельзя.
Интуитивно догадываюсь, что есть два простых решения.
1. Прописать какую-то умную вещь в AssemblyInfo.cs. Чтобы при запуске программа требовала подтверждения на права администратора.
2. Прописать в реестре HKCU\...\Windows\CurrentVersion\... тоже какую-то умную вещь программно.
Конкретезируйте плз. Как сделать сборку с правами админа. Я уже потерялся в поисках и мсдне.
// coping or overwrite files from one folder to another, recursive
private static void CopyRecursive(string sourcePath, string targetPath)
{
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
if (!Directory.Exists(sourcePath))
throw new Exception(sourcePath + " - does not exist!");
string[] files = Directory.GetFiles(sourcePath);
// Copy the files and overwrite destination files if they already exist.
foreach (string s in files)
{
string fileName = Path.GetFileName(s);
string destFile = Path.Combine(targetPath, fileName);
File.Copy(s, destFile, true);
}
// call copy recursive to copy directories
string[] dirs = Directory.GetDirectories(sourcePath);
foreach (string d in dirs)
{
string tdir = Path.GetFileName(d);
tdir = Path.Combine(targetPath, tdir);
CopyRecursive(d, tdir);
}
}
создать манифест с записью <requestedExecutionLevel.level="requireAdministrator"/>
Здравствуйте, licedey, Вы писали:
L>Здравствуйте, Alex Dav, Вы писали:
AD>>создать манифест с записью <requestedExecutionLevel.level="requireAdministrator"/>
L>Спасибо. А при создании setup.exe из VS, манифест не нужно включать? Он в сборке уже.
пусть меня поправят, но это уже зависит от студии и как создали манифест, если руками то надо добалять в сетап,
если у вас студия ниже 2008 читайте
здесь
если 2008 и добавляли через визард, то вроед все должно быть ОК (сам еще не проверял