Записать файл в C:\Program Files\. Windows 7 (UAC)
От: licedey  
Дата: 10.03.10 18:28
Оценка:
Здравствуйте,

Задача — копировать файлы из одной программы в другую. То бишь синхронизировать. Система 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);
            }
        }
администратор сборка assemblyinfo.cs c# run as administrator
Re: Записать файл в C:\Program Files\. Windows 7 (UAC)
От: Alex Dav Россия  
Дата: 10.03.10 18:37
Оценка: 1 (1)
создать манифест с записью <requestedExecutionLevel.level="requireAdministrator"/>
Re[2]: Записать файл в C:\Program Files\. Windows 7 (UAC)
От: licedey  
Дата: 10.03.10 19:01
Оценка:
Здравствуйте, Alex Dav, Вы писали:

AD>создать манифест с записью <requestedExecutionLevel.level="requireAdministrator"/>

Спасибо. А при создании setup.exe из VS, манифест не нужно включать? Он в сборке уже.
Re[3]: Записать файл в C:\Program Files\. Windows 7 (UAC)
От: Alex Dav Россия  
Дата: 10.03.10 21:15
Оценка: 9 (1)
Здравствуйте, licedey, Вы писали:

L>Здравствуйте, Alex Dav, Вы писали:


AD>>создать манифест с записью <requestedExecutionLevel.level="requireAdministrator"/>

L>Спасибо. А при создании setup.exe из VS, манифест не нужно включать? Он в сборке уже.

пусть меня поправят, но это уже зависит от студии и как создали манифест, если руками то надо добалять в сетап,
если у вас студия ниже 2008 читайте здесь
если 2008 и добавляли через визард, то вроед все должно быть ОК (сам еще не проверял
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.