2010-11-19 1 views
0

Nicht ganz sicher, warum ich nicht diese Datei zum Löschen erhalten kann. Ich bin als Admin eingeloggt, habe versucht "Run as Admin", versucht im selben Ordner zu laufen, habe versucht, Berechtigungen für die Datei zu setzen, habe versucht eine Test 1.txt Datei zu löschen und kein Glück. Es verhält sich so, als wäre die Datei nicht da. Ich kann es im Windows Explorer sehen. Bitte jede Hilfe ist willkommen. Vielen Dank für Ihre Zeit.Probleme beim Löschen einer Datei von C: Windows System32 mit C#

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 
+1

Verwenden Sie procmon von sysinternals, um die E/A-Anforderungen an das Dateisystem zu überwachen. http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx –

+0

Danke für die Info !! Ausgezeichneter Rat. Es wurde überprüft C: \ Windows \ sysWOW64 –

Antwort

0
+0

Habe es einfach ausprobiert und es hat nicht geholfen. Danke für Ihre Antwort. Das werde ich mir merken. –

+0

Sorry Raymund. Ich wollte diese Antwort auf eine andere Antwort posten. Ich glaube, das gehört dazu. Ich habe gerade getestet, wie Tony Lee vorgeschlagen hat und versucht, C: \ windows \ SysWOW64 \ zu lesen, auch wenn ich es den Pfad drucken lasse, zeigt es immer noch c: \ windows \ system32 –

+1

'Environment.ExpandEnvironmentVariables (@"% systemroot% \ Sysnative ")' behob das Problem. Ich habe es aufgrund deines Links gefunden !!! –

0

ich eine Testdatei "test.txt" erstellt und es kein Problem gearbeitet. Ich sollte nicht, dass ich nicht die von Ihnen gepostete Methode verwendet habe, sondern den Inhalt Ihrer mitgelieferten Methode verwendet und sie innerhalb der main() - Methode einer Konsolenanwendung verwendet habe.

ou sollte auch ReadLine() hinzufügen, um alle Nachrichten anzuzeigen, die zurückgegeben werden.

Dies ist, was ich verwendet habe, nicht, dass es viel anders ist als das, was Sie geliefert haben. Wenn dieser Code nicht für Sie funktioniert, muss es sich um ein Systemprivileg handeln.

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

Ich habe gerade den Code getestet und es gibt immer noch "Datei existiert nicht". Irgendwelche Ideen, wie Sie nach den Berechtigungen suchen können. Ich bin bereit, alles auszuprobieren. –

+0

Sind Sie 100% sicher, dass die Datei in Ihrem System32-Verzeichnis existiert? Sind Sie sicher, dass Sie die Datei nicht schon vorher gelöscht haben? – user

+0

Ich kann die Datei in Windows Explorer anzeigen und sehen es unter C: \ Windows \ System32. Ich habe mit cmd mit "del c: \ windows \ system32 \ 1.txt" getestet und es wird die Datei löschen. –

0

Wenn Sie mit Vista/Windows 7, vielleicht sind Sie in file virtualization Probleme läuft. Haben Sie versucht, ein Manifest mit einer <requestedExecutionLevel level="requireAdministrator"/> Zeile hinzuzufügen?

+0

Ja, ich benutze Win 7 64bit. Ich werde diesen Vorschlag ausprobieren. Vielen Dank. –

+0

Nur getestet, und es hat nicht geholfen :( –

+0

Ich war in der Tat in Probleme mit der Dateivirtualisierung. Danke! –

Verwandte Themen