首先:我知道这对于实际检查我是否能写是不可靠的。我正在编写一个文件传输客户机,想要“远程”和“本地”文件浏览器窗格之间的功能对等。我完全理解,无论执行什么操作,我都必须处理任何与权限相关的异常;这不是编程检查,它只是向用户显示而已。
我看到了一些关于这些帖子的例子,但是我所做的尝试要么是不理解,要么是不起作用。我尝试了以下两种方法,但对于我绝对无法写入的内容(例如,c:\windows或c:\program files的内容),这两种方法都返回了“yes”(是):
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来自己解决这个问题,但同样没有真正的例子。设置权限的例子很多,但检查权限的例子很少。
任何帮助都将不胜感激。