Копировать файлы в C: \ Program Files (x86) \ c# доступ запрещен при запуске приложения от имени администратора - PullRequest
0 голосов
/ 01 мая 2020

Я создаю приложение, которое читает файл .txt со списком файлов для копирования в разные места и перезаписи файлов, если они уже существуют, одно местоположение:

C:\Program Files (x86)\Common Files\System\ado\

При этом я получаю следующую ошибку:

System.UnauthorizedAccessException: 'Access to the path 'C:\Program Files (x86)\Common Files\System\ado\msado27.tlb' is denied.

Я запускаю свое приложение в качестве администратора и обновил файл манифеста приложений, чтобы вызвать его как Администратор пользователя. Однако я не уверен, почему я все еще получаю эту ошибку, даже работая в качестве администратора?

Чтобы скопировать файлы, которые я использую. Net операции с файлами:

File.Copy(sourceFile, destFile, true);

Полный раздел кода, который касается копирования файла для вашей справки:


 void readFilesToInstall()
        {
            // 1 Read FileToInstall.txt Line By Line from C:\Temp2\BarsInstaller
            // 2 each line read copy to correct location
            // 3.  update progress bar 

            string[] lines = File.ReadAllLines(@"C:\Temp2\BarsInstaller\FilesToInstall.txt");
            string sourcePath = @"C:\Temp2\BarsInstaller\";
            progressBar.Invoke((Action)delegate
            {

                progressBar.Maximum = lines.Length;
                progressBar.Value = 0;
                lblPercent.Text = "0%";

            });

            foreach (string line in lines)
            {
                string[] col = line.Split('=');
                //process col[0], col[1], col[2]
                string fileName = col[0];
                //string sourceFullName = source + fileName;
                DirectoryInfo fileCopyToLocation = new DirectoryInfo(col[1]);
                string sourceFile = Path.Combine(sourcePath, fileName);
                string destFile = Path.Combine(col[1], fileName);
                darkLabel2.Invoke((Action)delegate
                {

                    darkLabel2.Text = destFile;

                    darkLabel2.Refresh();

                });

                copyFilesToInstall(sourceFile, destFile, fileCopyToLocation);
                progressBar.Invoke((Action)delegate
                {

                    progressBar.Value++;


                });


            }

        }

        void copyFilesToInstall(string sourceFile, string destFile, DirectoryInfo target)
        {
            if(Directory.Exists(target.FullName) == false)
            {
                Directory.CreateDirectory(target.FullName);
            }





            File.Copy(sourceFile, destFile, true);
        }


...