【发布时间】:2011-02-28 01:08:49
【问题描述】:
首先:我知道这对于实际检查我是否可以写作并不可靠。我正在编写一个文件传输客户端,并希望“远程”和“本地”文件浏览器窗格之间的功能奇偶校验。我完全理解我将不得不处理任何执行的任何操作的权限相关异常;这不是编程检查,它只是向用户显示。
我已经看到了几个发布这些示例的示例,但是我尝试过的所有方法要么无法理解,要么不起作用。我尝试了以下两种方法,但对于我绝对无法写入的内容(例如 C:\Windows 或 C:\Program Files 的内容)都只返回“是”:
System.Security.Permissions.FileIOPermission fp = new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Write, Path);
return System.Security.SecurityManager.IsGranted(fp);
和
System.Security.Permissions.FileIOPermission fp = new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Write, element.Path);
try
{
fp.Assert();
return true;
}
catch(Exception x)
{
return false;
}
(同样,我知道捕捉Exception 是可怕的,而使用try/catch 进行逻辑则稍微不那么可怕,我只是想让它工作)。
第一个告诉我 IsGranted 已弃用,我应该使用 AppDomain.PermissionSet 或 Application.PermissionSet,但我找不到任何解释如何使用这些有意义的解释。我还看到我应该手动枚举所有 ACL 以自己弄清楚,但同样没有真正的例子。设置权限的例子很多,但检查它们的例子很少。
任何帮助将不胜感激。
【问题讨论】:
标签: c# .net permissions acl file-permissions