我正在尝试使用获取访问规则的方法为用户获取特定文件夹写入权限,并检查登录用户是否具有该文件夹的写入权限。但是当我尝试这样做时,我收到一条错误,指出directorynotfound。 以下是错误的屏幕截图:
她是我正在使用的方法:
private bool AccessPlanTemplate()
{
bool result = false;
try
{
string PlanTemplate = System.Configuration.ConfigurationSettings.AppSettings["PlanTemplate"];
string path = @"PlanTemplate";
string NtAccountName = @"TestUser";
DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity acl = di.GetAccessControl(AccessControlSections.All); //I AM GETTING ERROR ON THIS LINE
System.Security.AccessControl.AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(NTAccount));
//Go through the rules returned from the DirectorySecurity
foreach (System.Security.AccessControl.AuthorizationRule rule in rules)
{
//If we find one that matches the identity we are looking for
if (rule.IdentityReference.Value.Equals(NtAccountName, StringComparison.CurrentCultureIgnoreCase))
{
//Cast to a FileSystemAccessRule to check for access rights
if ((((FileSystemAccessRule)rule).FileSystemRights & FileSystemRights.WriteData) > 0)
{
result = true;
}
}
}
}
catch (UnauthorizedAccessException)
{
result = false;
}
return result;
}
有人对我在哪里出错有任何建议吗?有更好的方法吗?
答案 0 :(得分:2)
您正在设置字符串路径= @“PlanTemplate”的字符串值的路径;当我认为你想将plantemplate的值分配给你的路径时。正如这个代码所代表的那样,当我想你想要像@“c:\ mydirectory”这样的东西时,它总会尝试评估一个名为“PlanTemplate”的目录。
变化:
string path = @"PlanTemplate";
为:
string path = PlanTemplate;
再试一次