C#设置与获取目录权限(.net控制ACL) |
您所在的位置:网站首页 › windows获取文件夹权限 › C#设置与获取目录权限(.net控制ACL) |
找到两种方式可以修改文件夹的权限 第一种: 想用c#来设置和读取ntfs分区上的目录权限,找了很多资料,未果。终于发现了一段vb.net的代码,做了修改,以C#展示给大家。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
对照MSDN,很容易看懂上面的代码。 但是貌似这个程序需要以管理员身份来运行。^_^ 其中的Directory.GetAccessControl(FileName, AccessControlSections.All); 第二个参数如果为AccessControlSections.Access ,就可以使得运行在IIS中的Web应用程序获得目录权限了。 以上代码来源:http://www.cnblogs.com/zjneter/archive/2008/03/06/1093386.html
第二种方法:该方法就不多说了,搜索大多博客都写了第二种方法来设置权限,但是,实际上这种方法根本无法给目录设置用户权限(测试多次无法设置成功,不知其他人是否成功设置), /// /// 目录权限 /// public enum FloderRights { FullControl, Read, Write } public static void AddPathRights(string pathname, string username, FloderRights qx) { //FileInfo fi = new FileInfo(pathname); //System.Security.AccessControl.FileSecurity fileSecurity = fi.GetAccessControl(); //fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow)); //fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow)); //fi.SetAccessControl(fileSecurity); DirectoryInfo dirinfo = new DirectoryInfo(Path.GetDirectoryName(pathname)); if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0) { dirinfo.Attributes = FileAttributes.Normal; } //取得访问控制列表 DirectorySecurity dirsecurity = dirinfo.GetAccessControl(); // string strDomain = Dns.GetHostName(); //System.Security.AccessControl.DirectorySecurity dirsecurity = dirinfo.GetAccessControl(); switch (qx) { case FloderRights.FullControl: dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Allow)); break; case FloderRights.Read: dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow)); break; case FloderRights.Write: dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, AccessControlType.Allow)); break; default: dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Allow)); break; } dirinfo.SetAccessControl(dirsecurity); //System.IO.Directory.SetAccessControl(pathname, dirsecurity); //取消目录从父继承 //DirectorySecurity dirSecurity = System.IO.Directory.GetAccessControl(pathname); //dirSecurity.SetAccessRuleProtection(true, false); //System.IO.Directory.SetAccessControl(pathname, dirSecurity); //AccessControlType.Allow允许访问受保护对象//Deny拒绝访问受保护对象 //FullControl、Read 和 Write 完全控制,读,写 //FileSystemRights.Write写入//Delete删除 //DeleteSubdirectoriesAndFiles删除文件夹和文件//ListDirectory读取 //Modify读写删除-修改//只读打开文件和复制// } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |