控制台应用程序无法以域管理员身份读取基于访问的枚举的完整目录列表
Posted
技术标签:
【中文标题】控制台应用程序无法以域管理员身份读取基于访问的枚举的完整目录列表【英文标题】:Console App cannot read full directory listing for access based enumberation as domain admin 【发布时间】:2019-11-19 15:55:22 【问题描述】:我有一个控制台应用程序,它要么模拟域管理员,要么作为域管理员运行。它应该读取启用了基于访问的枚举的文件夹中的所有目录名称,然后对文件夹应用一些权限。应用程序获取目录的部分是:
string dirPath = ConfigurationManager.AppSettings["EPath"] + @"2019 Working Files";
DirectoryInfo di = new DirectoryInfo(dirPath);
DirectoryInfo[] directories = di.GetDirectories();
foreach (DirectoryInfo dir in directories)
// Doing something...
我已经登录到需要以本地和域管理员身份运行的服务器并运行它。我还尝试过模拟相同的用户,但检索到的只是 6500 多个目录信息项中的 45 个。我用来冒充管理员的代码是:
string impersonatedUserName = ConfigurationManager.AppSettings["EstimatingPathUser"].ToString();
string impersonationDomain = ConfigurationManager.AppSettings["EstimatingPathDomain"].ToString();
string impersonatedUserPassword = ConfigurationManager.AppSettings["EstimatingPathPassword"].ToString();
SafeTokenHandle safeTokenHandle;
string dirPath = ConfigurationManager.AppSettings["EPath"] + @"2019 Working Files";
DirectoryInfo di = new DirectoryInfo(dirPath);
DirectoryInfo[] directories = di.GetDirectories();
if (LogonUser(impersonatedUserName, impersonationDomain, impersonatedUserPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out safeTokenHandle))
directories = di.GetDirectories();
foreach (DirectoryInfo dir in directories)
// Doing something...
我什至尝试冒充所有文件夹的所有者。似乎没有任何效果。
【问题讨论】:
“get”是指“目录”只包含这 45 个? 我编辑了问题以进行澄清。也就是说,我的意思是当本地和域管理员都可以在根文件夹中看到超过 6500 个目录时,只有 45 个 DirectoryInfo 项被重新调整。 6500 在单个文件夹中还是在其他文件夹中? 根目录中有 6500 多个文件夹。 【参考方案1】:通常这样做没问题 - 刚刚测试过
也许您可以像这样检查您对丢失文件夹之一的权限:
System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(folderPath);
您也可以尝试以“管理员”身份运行您的应用程序,这可能会有所帮助
请告诉我
【讨论】:
【参考方案2】:一夜之间,服务器重新启动,应用程序现在可以正常运行。找到并处理了所有 6519 个文件夹。
【讨论】:
以上是关于控制台应用程序无法以域管理员身份读取基于访问的枚举的完整目录列表的主要内容,如果未能解决你的问题,请参考以下文章
Azure Service Fabric 群集:无法为 RPC 访问机器 10.0.0.X
在 Windows Server 2019 上以域用户身份运行时,IIS 站点不会显示静态内容
如何在 Firebase 中创建基于角色的访问控制或自定义声明