帐户具有权限,但没有权限错误

时间:2016-01-15 08:37:15

标签: c# sql-server

我在c#中使用下面的脚本来确定sqlserver服务帐户是否对目录有权限。

public static bool userhasaccess(string username, string path)
{
    DirectorySecurity dSecurity = Directory.GetAccessControl(path);
    bool control_allowed = false;
    bool control_denied = false;
    foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(NTAccount)))
    {                
        if (rule.IdentityReference.Value.ToLower() == username.ToLower())
        {
            if (rule.FileSystemRights == FileSystemRights.Read
                    || rule.FileSystemRights == FileSystemRights.FullControl
                    || rule.FileSystemRights == FileSystemRights.ReadAndExecute
                    || rule.FileSystemRights == FileSystemRights.ReadData
                    )
            {
                if (rule.AccessControlType == AccessControlType.Allow)
                    control_allowed = true;
                if (rule.AccessControlType == AccessControlType.Deny)
                    control_denied = true;
            }

        }
    }
    return (control_denied ? false : control_allowed);
}

这并不完美,因为它可能会忽略群组,但我已经使用我的具体示例逐步完成了代码,并且我的文件夹没有拒绝权限。 (\\服务器\目录)。

然后我执行一个SqlCommand restore HEADERONLY from disk = N'\\server\directory\file.bak',它应该为这个目录中的文件提供恢复头。

这给了我以下错误:

Cannot open backup device '\\server\directory\file.bak'. Operating system error 5(Access is denied.).
RESTORE HEADERONLY is terminating abnormally.

根据GetAccessRules,此帐户在此目录中具有FullControl,为什么会发生这种情况?

0 个答案:

没有答案