2012-04-24 1 views
0

Почему не удаляются файлы в тестовой папке? Как я могу получить доступ администратора?Нужно удалять файлы в файлах программ с помощью C#, файлы не удаляются

namespace Delete 
{ 
    using System; 
    using System.Windows.Forms; 
    using System.IO; 

    public class Delete 
    { 
     public Delete() 
     { 
      if (Directory.Exists(@"C:\Program Files (x86)\test\")) 
      { 
       string[] filePaths = Directory.GetFiles(@"C:\Program Files (x86)\test\"); 
       foreach (string file in filePaths) { File.Delete(file); } 
      } 
     } 
    } 
} 
+2

запустить его из командной строки с повышенными. – vcsjones

+0

хорошо это будет введено в программу, которая исходит от exe, больной должен заглянуть в то, что вы говорите, exe придется запускать как администратор, а потом нет? – jitsuin

ответ

2

Это связано с UAC. Поэтому либо запустите свой исполняемый файл как администратор, щелкнув правой кнопкой мыши -> «Запуск от имени администратора», или если вы хотите его программно ссылаться на другие сообщения, такие как Windows 7 and Vista UAC - Programmatically requesting elevation in C#

+0

я вижу, спасибо, спасибо, ребята: D – jitsuin

0

Для удаления файлов из папки «Program Files» вам необходимо запустить приложение в качестве администратора. В противном случае вы не сможете получить доступ к% PROGRAMFILES%.

Вот пример кода для перезапуска текущего приложения и запустить его в качестве администратора:

ProcessStartInfo proc = new ProcessStartInfo(); 
proc.UseShellExecute = true; 
proc.FileName = Application.ExecutablePath; 
proc.Verb = "runas"; 



try 
      { 

       Process.Start(proc); 

      } 

      catch 

      { 

       // The user refused the elevation. 

       // Do nothing and return directly ... 

       return; 

      } 

      Application.Exit(); // Quit itself 
+0

ах круто, я не думаю, что не обойти выбор пользователя, поскольку это функция безопасности в окнах? – jitsuin

3

Вам нужно пересмотреть свою стратегию.

При добавлении/удалении файлов из программно внутри приложения, они должны храниться в отдельном месте (что не нужно администратора privs поднять для записи/удаления и т.д.):

  1. как каталог пользователя данных/компания/приложение или
  2. документы пользователя/компания/вашего приложение

каталог Program Files для применения определенных файлов (DLL файлов, и т.д.), которые установлены с программы, но не чан ge после установки/обновления.

Вот пример каталога данных пользователя по применению:

public static DirectoryInfo ApplicationVersionDirectory() 
{ 
    return new DirectoryInfo(System.Windows.Forms.Application.UserAppDataPath); 
} 
+0

Спасибо Чак, хорошие идеи :) – jitsuin