2011-11-25 24 views
0

私の学校からプロジェクトを行っていますが、Windows XPからファイルを削除しようとしています。パスへのアクセスが拒否されました

ただし、ファイルの属性を設定してもこのエラーが発生します。パスへ

アクセスが

ファイルがC:\Document and Settings\%user%\Local Settings\Tempである」拒否された。他のプログラムが使用していることを意味し

どのようにこれを解決することができますか?

if(File.Exists(filePath)) 
{     
    FileSecurity sec = File.GetAccessControl(filePath); 
    sec.AddAccessRule(new FileSystemAccessRule(Environment.UserName, 
        FileSystemRights.FullControl, AccessControlType.Allow)); 
    File.SetAccessControl(filePath, sec); 
    File.SetAttributes(filePath, FileAttributes.Normal); 
    File.Delete(filePath); 
} 
+0

例外を投げているコードの行はどれですか? – mjwills

+0

削除するファイルがReadOnlyかどうかを忘れずにチェックしてください。その場合、ファイルを完全に制御していてもエラーが発生します。 – Peter

答えて

0

ファイル。
削除する前に、ファイル(またはプログラム全体)を閉じる必要があります。

のプログラムがファイルを使用する場合は、ストリームを閉じる(交差させない)ことを確認してください。

+0

FileAccessの問題ではなく、パスへのアクセスです(必然的に)。 – Polity

+0

必ずしもそうではありません。これは、ユーザーが非管理者(XPがサポートしている)として実行されており、アクセスルールを変更したり、別のユーザーのフォルダにアクセスする権利を持っていない可能性があります。 –

+0

@Polity:彼は常に 'C:\ Document and Settings \%user%\ Local Settings \ Temp'にアクセスするべきです。 – SLaks

2

FileSecurityはファイル自体のアクセス許可を設定します。 Thats all greatしかし、あなたがそれを削除する許可を持っているわけではありません。あなたのアプリを管理者として実行し、違いがあるかどうか確認してください。

0

ファイルを削除するための「管理者」または関連する権限があるかどうかを確認してください。

管理者権限を持っている場合は、あなたが言及したファイルに他の "権利"があるかどうかを確認してください。例:少数のMSファイルは削除できません。

正しいファイル名を指定してください。

これらのファイルをすべて確認した場合は、ファイルを開いているか、コード内に閉じていないと削除できません。

上記の解決策が機能しない場合でも、このファイルは破損しているか、他のユーザーまたは自分自身がまだ閉じていないファイルを使用しています。

0

これまでのところ、コードブロックは問題ありません。

ただし、以下の点に注意してください。

a。 Windows XPの場合は、ログインしたユーザーで、ユーザーが管理者グループに属していることを確認してユーザーに管理者アクセス権があるので、ユーザーが実行しているアプリケーションには管理者権限が与えられます。

b。 Vista、Windows 7などの他のアップデートされたWindowsの場合は、開発時にチェックインしながら、アプリケーションを右クリックしてポップアップから「管理者として実行」をクリックしてください。あなたのIDEを管理者として実行してください)。

これは役に立ちます。