您如何检查写入目录或文件的权限?
我有一个程序可以使用以下方法将一些数据写入文件。
public void ExportToFile(string filename){
using(FileStream fstream = new FileStream(filename,FileMode.Create))
using (TextWriter writer = new StreamWriter(fstream))
{
// try catch block for write permissions
writer.WriteLine(text);
}
}
运行程序时出现错误:
未处理的异常:System.UnauthorizedAccessException:拒绝访问路径“
mypath”。在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问,nt32权限,布尔useRights,FileShare共享,Int32
bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs)
,位于System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess访问FileShare共享,Int32
bufferSize,FileOptions选项,字符串msgPath,Boolea bFromProxy)的String
msgPath,布尔bFromProxy)
问题:我需要什么代码才能捕获此错误,如何授予访问权限?
回答:
根据此答案修改了代码,以摆脱过时的方法。
您可以使用Security名称空间进行检查:
public void ExportToFile(string filename){
var permissionSet = new PermissionSet(PermissionState.None);
var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename);
permissionSet.AddPermission(writePermission);
if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet))
{
using (FileStream fstream = new FileStream(filename, FileMode.Create))
using (TextWriter writer = new StreamWriter(fstream))
{
// try catch block for write permissions
writer.WriteLine("sometext");
}
}
else
{
//perform some recovery action here
}
}
就获得那些许可而言,您将不得不要求用户以某种方式为您执行此操作。如果您可以通过编程方式执行此操作,那么我们都会有麻烦;)
以上是 您如何检查写入目录或文件的权限? 的全部内容, 来源链接: utcz.com/qa/408215.html