C# Directory.SetAccessControl的代码示例
通过代码示例来学习C# Directory.SetAccessControl方法
通过代码示例来学习编程是非常高效的。
1. 代码示例提供了一个具体而直观的学习环境,使初学者能够立即看到编程概念和语法的实际应用。
2. 通过分析和模仿现有的代码实例,初学者可以更好地理解编程逻辑和算法的工作原理。
3. 代码实例往往涵盖了多种编程技巧和最佳实践,通过学习和模仿这些实例,学习者可以逐步掌握如何编写高效、可读性强和可维护的代码。这对于初学者来说,是一种快速提升编程水平的有效途径。
Directory.SetAccessControl是C#的System.IO命名空间下中的一个方法, 小编为大家找了一些网络大拿们常见的代码示例,源码中的Directory.SetAccessControl() 已经帮大家高亮显示了,大家可以重点学习Directory.SetAccessControl() 方法的写法,从而快速掌握该方法的应用。
Directory.SetAccessControl的代码示例1 - CreateAndConfigureProgramDataDirectories()
using System.IO; private void CreateAndConfigureProgramDataDirectories() { string serviceDataRootPath = Path.GetDirectoryName(this.serviceDataLocation); DirectorySecurity serviceDataRootSecurity = this.GetServiceDirectorySecurity(serviceDataRootPath); // Create GVFS.Service related directories (if they don't already exist) Directory.CreateDirectory(serviceDataRootPath, serviceDataRootSecurity); Directory.CreateDirectory(this.serviceDataLocation, serviceDataRootSecurity); // Ensure the ACLs are set correctly on any files or directories that were already created (e.g. after upgrading VFS4G) Directory.SetAccessControl(serviceDataRootPath, serviceDataRootSecurity); // Special rules for the Service.UI logs, as non-elevated users need to be be able to write this.CreateAndConfigureLogDirectory(GVFSPlatform.Instance.GetLogsDirectoryForGVFSComponent(GVFSConstants.Service.UIName)); }
开发者ID:microsoft,项目名称:VFSForGit,代码行数:18,代码来源:GVFSService.Windows.cs
在CreateAndConfigureProgramDataDirectories()方法中,Directory的代码示例类中的SetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
Directory.SetAccessControl的代码示例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的代码示例类中的SetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
Directory.SetAccessControl的代码示例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的代码示例类中的SetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
本文中的Directory.SetAccessControl方法示例由csref.cn整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。