独立 DirectoryServices.DirectoryEntry()

Stand alone DirectoryServices.DirectoryEntry()

我在一台独立的 Windows 10 笔记本电脑上,而不是 运行 AD LDS 或任何其他活动目录服务。我是 运行 IIS。

我试图深入理解这行代码在做什么,更重要的是,如何理解。

DirectoryEntry e3 = new DirectoryEntry(@"IIS://localhost/W3SVC/1/Root");

在没有 Active Directory 的情况下,windows OS 是否以某种方式伪造此方法?

1) 首先要注意你的意思是pre/portIIS7。在 IIS7 之后,许多事情都发生了变化,总的来说,它们看起来仍然很相似。但也有重要的区别。

2) 确保您至少 运行处于管理模式

run as administrator

~或者做得更好。

3) 查看 .net 的 DirectoryServices()/DirectoryEntry() 以及 Microsoft.Web.Administration.ServerManager()。这可能是您可以完成所有尝试的 90% 的地方。

4) 有一个非常有用的 windows 工具 cmdline exe (windows/syswow64[system32]/inetsvr/appcmd.exe) ~ 事实上,如果它是您 needs/environment 的一个选项,您可能更喜欢为您尝试做的所有事情创建一个 cmd 脚本。我建议先学习这个工具,然后使用它来提取大量 IIS/Site 元数据,以探索您想要到达的地方和目标。 https://www.iis.net/configreference/system.applicationhost/applicationpools

5) Powershell 有一个管理单元,肯定在安装了 IIS 的服务器上,也许在工作站上。我不经常使用 powershell,所以我最想说的是管理单元称为 WebAdministration and/or iisConsole。每次您 运行 您的脚本时,您可能需要 to/prefer 手动注册管理单元,或者您可以使用 IIS powershell 管理控制台自动注册管理单元。

6) 对于上述任何选项,请始终记住#2 ~ 确保您至少 运行处于管理模式。

7) 我知道您肯定是在 IIS 的元数据数据库领域玩游戏 ~ 而不是注册表。

本地工作站: 当您位于 IIS 实例本地时的确切机制?我不确定。您可能直接访问元数据,您可能通过 IIS 服务获取元数据,或者您可能正在访问 Server.exe 服务器服务,或其他。

远程服务器w/o LDAP: 如果您查询的是不在活动目录中的远程服务器?与工作站相同。

带 LDAP 的远程服务器: 如果您在 AD 中查询服务器,您几乎可以肯定会访问 AD/LDAP 服务。当然,从技术上讲,您这样做的方式可能是通过隔离,例如远程 server.exe 服务 运行ning。

-- 最终结果是 appcmd.exe、powershell 或 c# Microsoft.Web.Administration、DirectoryServer(),所有这些都可能接近于在后台执行相同的操作。但是这些是你访问那个后台的接口,所以你不需要考虑那么深的实现。

希望对大家有所帮助! 赞成你喜欢这个答案。