Web 服务需要检查用户的 NTFS 文件权限
Web service needs to check NTFS file permissions for user
我们有一个 asp.net mvc web 服务需要能够检查网络文件夹的 NTFS 权限,并且 return 只包含那些文件夹和文件的列表到 UI 用户有权查看。我们不能为此使用模拟。我们将如何着手实现这一目标?
在解决这个问题的过程中,我发现这个问题很有帮助,但不太符合我们的需求:
Effective file permissions tool's api in windows。感谢@YacoubMassad 为我指明了这个方向。使用此代码,我创建了一个有效的权限服务来检查读取权限,但我 运行 遇到了意外问题。对于用户具有查看权限的文件夹,该服务会正常工作,但对于其他人来说,它会不正确地 return true
,因为它不是 return 掩码。结果是我的服务显示了用户无权查看的文件夹列表。我想我可以改变我的服务来解决这个问题,但它变得越来越复杂。
我采用的解决方案并不优雅,但简单有效。我写了一个为每个目录调用 GetDirectories()
的方法。对于 GetDirectories()
成功执行的每个目录,路径被添加到一个列表中,该列表被 return 编辑到视图中。由于我们的权限是在目录级别处理的,所以这是我需要做的。我也处理文件上的任何 UnauthorizedAccessExceptions
,以防在该级别设置权限。
public IList<FilePathObject> PopulateAuthorizedPathList()
{
IList<FilePathObject> authorizedPathList = new List<FilePathObject>();
foreach (FilePathObject pathObject in fullPathList)
{
var dir = new DirectoryInfo(pathObject.FullPath);
if (dir.Exists)
{
try
{
var info = dir.GetDirectories();
authorizedPathList.Add(pathObject);
}
catch (UnauthorizedAccessException ex)
{
}
}
}
return authorizedPathList;
}
我们有一个 asp.net mvc web 服务需要能够检查网络文件夹的 NTFS 权限,并且 return 只包含那些文件夹和文件的列表到 UI 用户有权查看。我们不能为此使用模拟。我们将如何着手实现这一目标?
在解决这个问题的过程中,我发现这个问题很有帮助,但不太符合我们的需求:
Effective file permissions tool's api in windows。感谢@YacoubMassad 为我指明了这个方向。使用此代码,我创建了一个有效的权限服务来检查读取权限,但我 运行 遇到了意外问题。对于用户具有查看权限的文件夹,该服务会正常工作,但对于其他人来说,它会不正确地 return true
,因为它不是 return 掩码。结果是我的服务显示了用户无权查看的文件夹列表。我想我可以改变我的服务来解决这个问题,但它变得越来越复杂。
我采用的解决方案并不优雅,但简单有效。我写了一个为每个目录调用 GetDirectories()
的方法。对于 GetDirectories()
成功执行的每个目录,路径被添加到一个列表中,该列表被 return 编辑到视图中。由于我们的权限是在目录级别处理的,所以这是我需要做的。我也处理文件上的任何 UnauthorizedAccessExceptions
,以防在该级别设置权限。
public IList<FilePathObject> PopulateAuthorizedPathList()
{
IList<FilePathObject> authorizedPathList = new List<FilePathObject>();
foreach (FilePathObject pathObject in fullPathList)
{
var dir = new DirectoryInfo(pathObject.FullPath);
if (dir.Exists)
{
try
{
var info = dir.GetDirectories();
authorizedPathList.Add(pathObject);
}
catch (UnauthorizedAccessException ex)
{
}
}
}
return authorizedPathList;
}