2010-11-19 15 views
0

を使用してファイルを削除できない理由このファイルを削除できない理由がわかりません。私は管理者としてログインしていて、「管理者として実行」しようとしました。同じフォルダで実行しようとしましたが、ファイルのアクセス権を試してみました。それはファイルのように動作していないです。 Windowsエクスプローラで見ることができます。助けてください、歓迎します。あなたの時間をありがとう。C: windows system32から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

sysinternalsからprocmonを使用して、ファイルシステムへのI/O要求を監視します。 http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx –

+0

情報ありがとうございます!優れたアドバイス。それはC:\ windows \ sysWOW64をチェックしていた –

答えて

0
+0

ちょうどそれを試して、それは役に立たなかった。どうもありがとうございました。私はこれを念頭に置いておきます。 –

+0

申し訳ありませんRaymund。私は別の答えにこの返信を投稿するつもりだった。私はこれがその一部だと信じています。私はTony Leeが示唆したようにテストしましたが、C:\ windows \ SysWOW64 \を読み込もうとしていますが、それでもまだc:\ windows \ system32のパスが表示されている場合は –

+1

Environment.ExpandEnvironmentVariables(@ "%systemroot%\ Sysnative ")'が問題を修正しました。私はあなたのリンクのためにそれを見つけた! –

0

をこの1つを試してみてください、私はテストファイル "test.txtという" を作成し、それが何の問題も働きました。投稿したメソッドを使用せず、提供されたメソッドの内容を使用し、コンソールアプリケーションのmain()メソッド内でそれらを使用してはいけません。

ouは、返されるメッセージを表示するために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

私はちょうどコードをテストし、それでも "ファイルは存在しません"を返します。どのようにアクセス許可をチェックするかに関するアイデア。私は何かを試してみたい。 –

+0

ファイルがSystem32ディレクトリ内に存在することを100%確信していますか?あらかじめファイルを削除していないのですか? – user

+0

Windowsエクスプローラでファイルを表示し、C:\ windows \ system32にあることを確認できます。私は "del c:\ windows \ system32 \ 1.txt"を使用してcmdをテストし、ファイルを削除します。 –

0

Vista/Windows 7をお使いの場合は、​​の問題が発生している可能性があります。 <requestedExecutionLevel level="requireAdministrator"/>行のマニフェストを追加しようとしましたか?

+0

はい私はWin 7 64bitを使用しています。私はこの提案を試してみます。ありがとうございました。 –

+0

ちょうどこれをテストしたが役に立たなかった:( –

+0

本当にファイル仮想化の問題に遭遇していた。ありがとう! –

関連する問題