パスへのアクセスが拒否されました

学校からプロジェクトをやっていて、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
削除するファイルがReadOnlyかどうかを確認することを忘れないでください。その場合、ファイルを完全に制御していてもエラーが発生します。
追加された 著者 Peter,
コードのどの行が例外をスローしていますか?
追加された 著者 mjwills,

4 答え

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

2
追加された

これは、別のプログラムがファイルを使用していることを意味します。
削除する前に、ファイル(またはプログラム全体)を閉じる必要があります。

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

0
追加された
@Polity:彼は常に C:\ Document and Settings \%user%\ Local Settings \ Temp にアクセスする必要があります。
追加された 著者 SLaks,
必ずしも。これは、ユーザーが非管理者(XPがサポートしている)として実行されており、アクセスルールを変更したり、別のユーザーのフォルダにアクセスする権利を持っていない可能性があります。
追加された 著者 Ken White,
ストリームを渡ってはいけません! www.youtube.com/watch?v=jyaLZHiJJnE
追加された 著者 Kirk Broadhurst,
FileAccessの問題ではなく、パスへのアクセスです(必然的に)。
追加された 著者 Polity,

これまでのところ、コードブロックは大丈夫です。

しかし、以下のことを覚えておいてください:

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

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

これが役に立つと願っています。

0
追加された

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

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

正しいファイル名が指定されているかどうかを確認してください。

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

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

0
追加された