如何检查TreeView中是否锁定了目录
本文关键字:锁定 是否 TreeView 何检查 检查 | 更新日期: 2023-09-27 18:29:49
我有一个TreeView
,它映射并填充目录中的所有文件夹,我传入变量virtualPath
是否有任何函数或属性可以告诉我目录是否被阻止?这样我就可以向用户显示一条消息,说他没有访问该目录的权限。
String[] directories= Listdirectories(virtualPath.ToString());
foreach (string directory in directories) {
node = new RadTreeNode(Path.GetDirectoryName(directory .ToString()));
node.Value = virtualPath + "''" + Path.GetFileName(directory .ToString());
parentNode.Nodes.Add(node);
}
Directory.GetAcessControl(路径)满足您的要求。
public static bool HasWritePermissionOnDir(string path)
{
var writeAllow = false;
var writeDeny = false;
var accessControlList = Directory.GetAccessControl(path);
if(accessControlList == null)
return false;
var accessRules = accessControlList.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
if(accessRules ==null)
return false;
foreach (FileSystemAccessRule rule in accessRules)
{
if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write) continue;
if (rule.AccessControlType == AccessControlType.Allow)
writeAllow = true;
else if (rule.AccessControlType == AccessControlType.Deny)
writeDeny = true;
}
return writeAllow && !writeDeny;
}
(FileSystemRights.Write&rights)==FileSystemRights。Write使用的是一种名为"Flags"的东西,如果你不知道它是什么,你应该真正阅读:)
在填充Treeview时,用以下内容标记所需的节点:节点。标签="LOCK"
然后使用
private void trv_SourceFolder_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
if (Convert.ToString(e.Node.Tag) == "LOCK")
e.Cancel = true;
}