Damith
Damith

Reputation: 63065

Checking for shared folder write access for current user

I have following method to check current user have write access to given network location

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;

but problem is when folder permission given to user group, above method is failed.

I don't want to check the permissions by writing a file and decide the write access permissions.

is there any way to find current user in the IdentityReference.Value? or suggestions to overcome this issue?

Upvotes: 0

Views: 2681

Answers (2)

RoccoC5
RoccoC5

Reputation: 4213

This may work for you:

FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, this.GetFileServerRootPath);

try
{
    writePermission.Demand();
    return true;
}
catch (SecurityException s)
{
    return false;
}

Just curious - why not just try/catch your write operation?

Upvotes: 1

Zenwalker
Zenwalker

Reputation: 1919

May be you should use DirectoryInfo on that directory to get its security policies.

Upvotes: 0

Related Questions