C# Directory.GetAccessControl的代码示例
通过代码示例来学习C# Directory.GetAccessControl方法
通过代码示例来学习编程是非常高效的。
1. 代码示例提供了一个具体而直观的学习环境,使初学者能够立即看到编程概念和语法的实际应用。
2. 通过分析和模仿现有的代码实例,初学者可以更好地理解编程逻辑和算法的工作原理。
3. 代码实例往往涵盖了多种编程技巧和最佳实践,通过学习和模仿这些实例,学习者可以逐步掌握如何编写高效、可读性强和可维护的代码。这对于初学者来说,是一种快速提升编程水平的有效途径。
Directory.GetAccessControl是C#的System.IO命名空间下中的一个方法, 小编为大家找了一些网络大拿们常见的代码示例,源码中的Directory.GetAccessControl() 已经帮大家高亮显示了,大家可以重点学习Directory.GetAccessControl() 方法的写法,从而快速掌握该方法的应用。
Directory.GetAccessControl的代码示例1 - GetServiceDirectorySecurity()
using System.IO; private DirectorySecurity GetServiceDirectorySecurity(string serviceDataRootPath) { DirectorySecurity serviceDataRootSecurity; if (Directory.Exists(serviceDataRootPath)) { this.tracer.RelatedInfo($"{nameof(this.GetServiceDirectorySecurity)}: {serviceDataRootPath} exists, modifying ACLs."); serviceDataRootSecurity = Directory.GetAccessControl(serviceDataRootPath); } else { this.tracer.RelatedInfo($"{nameof(this.GetServiceDirectorySecurity)}: {serviceDataRootPath} does not exist, creating new ACLs."); serviceDataRootSecurity = new DirectorySecurity(); } // Protect the access rules from inheritance and remove any inherited rules serviceDataRootSecurity.SetAccessRuleProtection(isProtected: true, preserveInheritance: false); // Remove any existing ACLs and add new ACLs for users and admins WindowsFileSystem.RemoveAllFileSystemAccessRulesFromDirectorySecurity(serviceDataRootSecurity); WindowsFileSystem.AddUsersAccessRulesToDirectorySecurity(serviceDataRootSecurity, grantUsersModifyPermissions: false); WindowsFileSystem.AddAdminAccessRulesToDirectorySecurity(serviceDataRootSecurity); return serviceDataRootSecurity; }
开发者ID:microsoft,项目名称:VFSForGit,代码行数:26,代码来源:GVFSService.Windows.cs
在GetServiceDirectorySecurity()方法中,Directory的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
Directory.GetAccessControl的代码示例2 - TryCreateDirectoryAccessibleByAuthUsers()
using System.IO; ///
/// Creates the specified directory (and its ancestors) if they do not /// already exist. /// /// If the specified directory does not exist this method: /// /// - Creates the directory and its ancestors /// - Adjusts the ACLs of 'directoryPath' (the ancestors' ACLs are not /// modified). /// ////// - true if the directory already exists -or- the directory was successfully created /// with the proper ACLS /// - false otherwise /// ////// The following permissions are typically present on deskop and missing on Server. /// These are the permissions added by this method. /// /// ACCESS_ALLOWED_ACE_TYPE: NT AUTHORITY\Authenticated Users /// [OBJECT_INHERIT_ACE] /// [CONTAINER_INHERIT_ACE] /// [INHERIT_ONLY_ACE] /// DELETE /// GENERIC_EXECUTE /// GENERIC_WRITE /// GENERIC_READ /// public bool TryCreateDirectoryAccessibleByAuthUsers(string directoryPath, out string error, ITracer tracer = null) { if (Directory.Exists(directoryPath)) { error = null; return true; } try { // Create the directory first and then adjust the ACLs as needed Directory.CreateDirectory(directoryPath); // Use AccessRuleFactory rather than creating a FileSystemAccessRule because the NativeMethods.FileAccess flags // we're specifying are not valid for the FileSystemRights parameter of the FileSystemAccessRule constructor DirectorySecurity directorySecurity = Directory.GetAccessControl(directoryPath); AccessRule authenticatedUsersAccessRule = directorySecurity.AccessRuleFactory( new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null), unchecked((int)(NativeMethods.FileAccess.DELETE | NativeMethods.FileAccess.GENERIC_EXECUTE | NativeMethods.FileAccess.GENERIC_WRITE | NativeMethods.FileAccess.GENERIC_READ)), true, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow); // The return type of the AccessRuleFactory method is the base class, AccessRule, but the return value can be cast safely to the derived class. // https://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemsecurity.accessrulefactory(v=vs.110).aspx directorySecurity.AddAccessRule((FileSystemAccessRule)authenticatedUsersAccessRule); Directory.SetAccessControl(directoryPath, directorySecurity); } catch (Exception e) when (e is IOException || e is UnauthorizedAccessException || e is SystemException) { if (tracer != null) { EventMetadata metadataData = new EventMetadata(); metadataData.Add("Exception", e.ToString()); metadataData.Add(nameof(directoryPath), directoryPath); tracer.RelatedError(metadataData, $"{nameof(this.TryCreateDirectoryAccessibleByAuthUsers)}: Failed to create and configure directory"); } error = e.Message; return false; } error = null; return true; }
开发者ID:microsoft,项目名称:VFSForGit,代码行数:76,代码来源:WindowsFileSystem.cs
在TryCreateDirectoryAccessibleByAuthUsers()方法中,Directory的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
Directory.GetAccessControl的代码示例3 - SetAccessRule()
using System.IO; static void SetAccessRule(string directory) { try { System.Security.AccessControl.DirectorySecurity sec = System.IO.Directory.GetAccessControl(directory); FileSystemAccessRule accRule = new FileSystemAccessRule(Environment.UserDomainName + "\\" + Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow); sec.AddAccessRule(accRule); Directory.SetAccessControl(directory, sec); } catch (Exception ex) { Console.WriteLine($"Failed to set access rule for directory '{directory}': {ex.Message}"); } }
开发者ID:KillzXGaming,项目名称:Switch-Toolbox,代码行数:16,代码来源:Program.cs
在SetAccessRule()方法中,Directory的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
Directory.GetAccessControl的代码示例4 - TakeOwnDirectory()
using System.IO; public static void TakeOwnDirectory(string path) { DirectoryInfo directoryInfo = new(path); DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(); directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User); Privilege p = new(Privilege.TakeOwnership); bool ownershipTaken = false; try { p.Enable(); new DirectoryInfo(path).SetAccessControl(directorySecurity); ownershipTaken = true; } catch (Privileges.PrivilegeNotHeldException e) { Console.WriteLine("Failed to assign privileges. " + e.ToString()); } finally { p.Revert(); } if (ownershipTaken) { AdjustPermissionsForDirectory(path); foreach (string subFile in (System.Collections.Generic.IEnumerable
)Directory.EnumerateFiles(path)) { TakeOwnFile(subFile); } foreach (string subDir in (System.Collections.Generic.IEnumerable )Directory.EnumerateDirectories(path)) { TakeOwnDirectory(subDir); } } }
开发者ID:gus33000,项目名称:UUPMediaCreator,代码行数:41,代码来源:TakeOwn.cs
在TakeOwnDirectory()方法中,Directory的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
本文中的Directory.GetAccessControl方法示例由csref.cn整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。