我想知道如何在运行中的应用程序中使用Win32 API来确定运行应用程序的工作站或服务器的域控制器/主域控制器。
特别是,给定机器的主机名,我希望找到将主机名解析为特定机器的权威来源的名称。(我认为这是域控制器;我对这个领域的知识非常薄弱,所以我可能问错了问题。)
我见过一个据称能做到这一点的C#代码片段,但不知道是否与Win32 API有任何关系。有很多“如何获得DC”网页,但它们都是调用命令脚本,而不是API。
很高兴有代码,但如果有人给我指明了正确的方向,那么愿意做关于提取步骤的作业。
Linux中有类似的吗?(例如,本机调用来查找名称服务器?)我不假设Linux上下文有Windows域控制器)。
(啊哈.刚刚发现了这个问题:从Windows获取计算机的域名。会再深入研究的。编辑:也许我想要的函数是NetDCName?我在哪里得到它想要的参数?)
编辑4月19日:我使用Eric的提示编写/测试了NetDCName。是的,当有一个域控制器名时,它会生成域控制器名,如果没有,则生成一个错误信号,这正是正确的功能行为。
然而,函数调用似乎需要几秒钟的时间!为什么会这样?这让我想做的检查中出现了不可接受的、用户可见的延迟。
发布于 2014-04-18 23:14:19
NetGetDCName是一个选项;如果您需要更多的功能,DsGetDcName也是一个选项。
MSDN文档明确指出NULL用于指示默认值,因此
nStatus = NetGetDCName(NULL, NULL, (LPBYTE *) &lpDcName);将返回本地计算机上默认域的域控制器。
https://stackoverflow.com/questions/23147630
复制相似问题