您如何检查写入目录或文件的权限?

我有一个程序可以使用以下方法将一些数据写入文件。

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

回到顶部