C# DirectoryInfo.GetAccessControl的代码示例
通过代码示例来学习C# DirectoryInfo.GetAccessControl方法
通过代码示例来学习编程是非常高效的。
1. 代码示例提供了一个具体而直观的学习环境,使初学者能够立即看到编程概念和语法的实际应用。
2. 通过分析和模仿现有的代码实例,初学者可以更好地理解编程逻辑和算法的工作原理。
3. 代码实例往往涵盖了多种编程技巧和最佳实践,通过学习和模仿这些实例,学习者可以逐步掌握如何编写高效、可读性强和可维护的代码。这对于初学者来说,是一种快速提升编程水平的有效途径。
DirectoryInfo.GetAccessControl是C#的System.IO命名空间下中的一个方法, 小编为大家找了一些网络大拿们常见的代码示例,源码中的DirectoryInfo.GetAccessControl() 已经帮大家高亮显示了,大家可以重点学习DirectoryInfo.GetAccessControl() 方法的写法,从而快速掌握该方法的应用。
DirectoryInfo.GetAccessControl的代码示例1 - HasFolderPermission()
using System.IO; public static bool HasFolderPermission(string folderPath) { return true; DirectoryInfo dirInfo = new DirectoryInfo(folderPath); try { DirectorySecurity dirAC = dirInfo.GetAccessControl(AccessControlSections.All); return true; } catch (PrivilegeNotHeldException) { return false; } }
开发者ID:KillzXGaming,项目名称:Switch-Toolbox,代码行数:17,代码来源:DirectoryHelper.cs
在HasFolderPermission()方法中,DirectoryInfo的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
DirectoryInfo.GetAccessControl的代码示例2 - 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()方法中,DirectoryInfo的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
DirectoryInfo.GetAccessControl的代码示例3 - CheckAccess()
using System.IO; public static bool CheckAccess(string path) { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); bool isInRoleWithAccess = true; try { DirectoryInfo di = new DirectoryInfo(DirectoryUtils.ToLongPath(path)); DirectorySecurity ds = di.GetAccessControl(); AuthorizationRuleCollection rules = ds.GetAccessRules(true, true, typeof(NTAccount)); foreach (AuthorizationRule rule in rules) { FileSystemAccessRule fsAccessRule = rule as FileSystemAccessRule; if (fsAccessRule == null) { continue; } if ((fsAccessRule.FileSystemRights & FileSystemRights.CreateDirectories) != 0 || (fsAccessRule.FileSystemRights & FileSystemRights.DeleteSubdirectoriesAndFiles) != 0) { NTAccount ntAccount = rule.IdentityReference as NTAccount; if (ntAccount == null) { continue; } if (principal.IsInRole(ntAccount.Value)) { if (fsAccessRule.AccessControlType == AccessControlType.Deny) { isInRoleWithAccess = false; break; } } } } } catch (UnauthorizedAccessException) { isInRoleWithAccess = false; } return isInRoleWithAccess; }
开发者ID:mafaca,项目名称:UtinyRipper,代码行数:47,代码来源:PermissionValidator.cs
在CheckAccess()方法中,DirectoryInfo的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
DirectoryInfo.GetAccessControl的代码示例4 - CheckWritePermission()
using System.IO; #if !NET_CORE private static void CheckWritePermission(string path) { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); bool isInRoleWithAccess = false; try { DirectoryInfo di = new DirectoryInfo(DirectoryUtils.ToLongPath(path)); DirectorySecurity ds = di.GetAccessControl(); AuthorizationRuleCollection rules = ds.GetAccessRules(true, true, typeof(NTAccount)); foreach (AuthorizationRule rule in rules) { FileSystemAccessRule fsAccessRule = rule as FileSystemAccessRule; if (fsAccessRule == null) { continue; } if ((fsAccessRule.FileSystemRights & FileSystemRights.Write) != 0) { NTAccount ntAccount = rule.IdentityReference as NTAccount; if (ntAccount == null) { continue; } if (principal.IsInRole(ntAccount.Value)) { if (fsAccessRule.AccessControlType == AccessControlType.Deny) { isInRoleWithAccess = false; break; } isInRoleWithAccess = true; } } } } catch (UnauthorizedAccessException) { } if (!isInRoleWithAccess) { // is run as administrator? if (principal.IsInRole(WindowsBuiltInRole.Administrator)) { return; } // try run as admin Process proc = new Process(); string[] args = Environment.GetCommandLineArgs(); proc.StartInfo.FileName = args[0]; proc.StartInfo.Arguments = string.Join(" ", args.Skip(1).Select(t => $"\"{t}\"")); proc.StartInfo.UseShellExecute = true; proc.StartInfo.Verb = "runas"; try { proc.Start(); Environment.Exit(0); } catch (Win32Exception ex) { //The operation was canceled by the user. const int ERROR_CANCELLED = 1223; if (ex.NativeErrorCode == ERROR_CANCELLED) { Logger.Log(LogType.Error, LogCategory.General, $"You can't export to folder {path} without Administrator permission"); Console.ReadKey(); } else { Logger.Log(LogType.Error, LogCategory.General, $"You have to restart application as Administator in order to export to folder {path}"); Console.ReadKey(); } } } }
开发者ID:mafaca,项目名称:UtinyRipper,代码行数:84,代码来源:Program.cs
在CheckWritePermission()方法中,DirectoryInfo的代码示例类中的GetAccessControl的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞
本文中的DirectoryInfo.GetAccessControl方法示例由csref.cn整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。