Проблема удаления файла из c: \ windows \ system32 с помощью C # - PullRequest
0 голосов
/ 19 ноября 2010

Не совсем уверен, почему я не могу удалить этот файл. Я вошел в систему как администратор, попробовал «Запуск от имени администратора», попытался запустить в той же папке, попытался установить права доступа к файлу, попытался создать тестовый файл 1.txt для удаления, и не повезло. Он действует так, будто файла там нет. Я вижу это в проводнике Windows. Пожалуйста, любая помощь приветствуется. Спасибо за ваше время.

public void deleteFile(string FileToDelete)
        {            
            //sets system32 to system32 path
            string system32 = Environment.SystemDirectory + @"\";

            //File.SetAttributes(@system32 + FileToDelete, FileAttributes.Normal);

            try
            {
                //check if file exists
                if (!File.Exists(@system32 + @FileToDelete))
                {
                    //if it doesn't no need to delete it
                    Console.WriteLine("File doesn't exist or is has already been deleted.");
                    //Console.WriteLine(system32 + FileToDelete);

                } //end if
                //if it does, then delete
                else
                {
                    File.Delete(system32 + FileToDelete);
                    Console.WriteLine(FileToDelete + " has been deleted.");

                } //end else
            } //end try
            //catch any exceptions
            catch (Exception ex)
            {
                Console.WriteLine(Convert.ToString(ex));
            } //end catch            
        } //end DeleteFile

Ответы [ 3 ]

0 голосов
/ 19 ноября 2010

Я создал тестовый файл "test.txt", и он работал без проблем.Мне не следует, чтобы я не использовал опубликованный вами метод, а использовал содержимое предоставленного вами метода и использовал их в методе main () консольного приложения.

Также следует добавить ReadLine ()для отображения любых сообщений, которые возвращаются.

Это то, что я использовал, а не то, что он сильно отличается от того, что вы предоставили.Если этот код не работает для вас, значит, это проблема с привилегиями системы.

static void Main(string[] args)
{
    string FileToDelete = "test.txt";
    //sets system32 to system32 path
    string system32 = Environment.SystemDirectory + @"\";

    try
    {
        //check if file exists
        if (!File.Exists(system32 + FileToDelete))
        {
            //if it doesn't no need to delete it
            Console.WriteLine("File doesn't exist or is has already been deleted.");
            //Console.WriteLine(system32 + FileToDelete);
            Console.ReadLine();

        } //end if
        //if it does, then delete
        else
        {
            File.Delete(system32 + FileToDelete);
            Console.WriteLine(FileToDelete + " has been deleted.");
            Console.ReadLine();

        } //end else
    } //end try
    //catch any exceptions
    catch (Exception ex)
    {
        Console.WriteLine(Convert.ToString(ex));
        Console.ReadLine();
    } //end catch            

}
0 голосов
/ 19 ноября 2010

Если вы используете Vista / Windows 7, возможно, у вас проблема виртуализации файлов . Вы пытались добавить манифест с <requestedExecutionLevel level="requireAdministrator"/> строкой в ​​нем?

0 голосов
/ 19 ноября 2010
...