【发布时间】:2019-12-18 21:36:11
【问题描述】:
我正在尝试使用 .Net Core 检查目录是否具有读写权限。
我正在使用 Visual Studio 2019、.Net Core 2.1。我试过GetAccessControl但没有成功,所以尝试了以下方法。
public static bool DirectoryHasPermission(string DirectoryPath)
{
if (string.IsNullOrEmpty(DirectoryPath))
{
return false;
}
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, DirectoryPath);
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
f2.Demand();
}
catch (SecurityException s)
{
Console.WriteLine(s.Message);
return false;
}
return true;
}
不管我放什么目录路径,即使不存在也返回true。
【问题讨论】:
-
@Esko 这适用于 .NET 2.0,而不是 .NET Core 2.1。旧方法在 .NET Core 中不起作用(直到 3.0)。
-
.NET 中的相关类是FileSecurity,而不是 FileIOPermission。 Luaan 已经解释过
System.Security.AccessControl是通过仅限 Windows 的 System.IO.FileSystem.AccessControl 包添加的。 FileSecurity 的文档页面显示了它的使用方式。您可以通过FileInfo.GetAccessControl访问文件的权限 -
@Luaan 好的,很高兴知道。我认为在将该包添加到项目后,代码示例仍然适用?
-
@Kev 您在寻找 Windows 还是 Linux 权限?安全模型非常不同,需要具有不同 API 的不同包