gpt4 book ai didi

c# - 域名和主机名可以相同吗

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:56 30 4
gpt4 key购买 nike

最近我试图找到问题“如何确定当前登录的用户是否属于域”的答案

在 Stackoverflow 上,我找到了上述涉及

用法的相当不错的答案
using System.Security.Principal;
using System.DirectoryServices.AccountManagement;

但我也看到一个简单的解决方案说

System.Environment.UserDomainName; - gives name of the current user's domain name.
System.Environment.MachineName; - gives name of the machine.

如果以上两个不相同,则表示用户是 UserDomainName 返回的域的一部分

很公平,来自 MSDN 的链接也证实了这一点

现在的问题是,如果“域名”和“机器名”相同怎么办?或者是否有可能与域名同名的机器可以加入域?

如果这是真的,是否有可能通过在这个简单的解决方案中添加一些东西来反查

最佳答案

我敢打赌,如果当前登录的用户没有登录到某个域,则他或她没有可分辨名称。使用 GetUserNameEx使用 EXTENDED_NAME_FORMAT 类型 NameFullyQualifiedDN (1)。

如果您得到一个值,那么您就知道当前用户已登录到域。但是,调用此函数可能会在一段时间内意外阻塞您的程序。您可能希望以异步方式调用此函数,因为它可能会尝试连接到某些 Active Directory 服务,但最终会失败或超时。

实现此目的的一种更灵活的方法是查找帐户 SID 并检查 EqualPrefixSid 是否可以将其与机器进行比较。如果是这种情况,那么您就知道当前帐户是机器的本地帐户(即不在域中)。这不涉及跨越网络和等待超时,所以它是一种更直接的方法。有趣的是,这也意味着如果机器名称与用户域相同,Windows 将不得不假定您要登录的域是本地计算机,因此几乎不可能登录到实际域,如果机器名确实与域相同。

关于c# - 域名和主机名可以相同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593233/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com