正在检查当前用户的共享文件夹写访问权限

本文关键字:共享文件 共享 文件夹 写访问 权限 用户 检查 | 更新日期: 2023-09-27 18:05:13

我有以下方法来检查当前用户是否有对给定网络位置的写访问

DirectorySecurity shareSecurity = new DirectoryInfo(this.GetFileServerRootPath).GetAccessControl();
foreach (FileSystemAccessRule fsRule in shareSecurity.GetAccessRules(true, true, typeof(NTAccount)))
{
    // check write permission for current user
    if (AccessControlType.Allow == fsRule.AccessControlType &&
            FileSystemRights.Write == (fsRule.FileSystemRights & FileSystemRights.Write))
    {
        if (null != fsRule.IdentityReference &&
            fsRule.IdentityReference.Value == WindowsIdentity.GetCurrent().Name)
        {
            return true;
        }
    }
}
return false;

但问题是当文件夹权限给用户组时,上述方法失败。

我不想通过写文件来检查权限并决定写访问权限。

是否有办法在IdentityReference.Value中找到当前用户?或者有什么建议来克服这个问题?

正在检查当前用户的共享文件夹写访问权限

这可能对你有用:

FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, this.GetFileServerRootPath);
try
{
    writePermission.Demand();
    return true;
}
catch (SecurityException s)
{
    return false;
}

只是好奇-为什么不尝试/捕获你的写操作?

也许您应该在该目录上使用DirectoryInfo来获取其安全策略。