ローカルフォルダー(c:\ temp)またはUNC(\ server \ share)のいずれかである特定のパスで書き込み権限が使用可能かどうかを確認する方法はありますか?書き込み権限はあるが削除できないため、作成したファイルを削除できないため、try/catchを使用できません...
質問する
2933 次
2 に答える
3
FileIOPermission
はい、クラスとFileIOPermissionAccess
列挙型を使用できます。
FileIOPermissionAccess.Write
:
ファイルまたはディレクトリへの書き込みまたは削除のためのアクセス。書き込みアクセスには、ファイルまたはディレクトリの削除と上書きが含まれます。
FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Write, myPath);
try
{
f.Demand();
//permission to write/delete/overwrite
}
catch (SecurityException s)
{
//there is no permission to write/delete/overwrite
}
于 2013-03-12T18:05:47.850 に答える
3
したがって、権限 demandを使用します。
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
f2.Demand();
// do something useful with the file here
}
catch (SecurityException s)
{
Console.WriteLine(s.Message);
// deal with the lack of permissions here.
}
必要な権限と必要なファイル システム オブジェクトを指定します。必要なアクセス許可がない場合は、セキュリティ例外がスローされます。詳細はこちら
- http://support.microsoft.com/kb/315529
- http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx
さまざまな理由 (競合状態もその 1 つ) により、NTFS ファイル システムのアクセス許可を調べるのは、見た目よりも複雑です。
どうやら、これが UNC パスに対してノーオペレーションであることが、しばらく前にわかったようです。詳細については、UNC パスの「アクセシビリティ」のテストに関する質問を参照してください。
ただし、少しグーグルフーは、この CodeProject クラスが役立つ可能性があることを示唆しています。
于 2013-03-12T18:03:55.530 に答える