【问题标题】:Cannot get domain name using C#无法使用 C# 获取域名
【发布时间】:2016-03-29 09:51:51
【问题描述】:

我正在尝试通过以下代码使用 C# 获取域名,

static void Main(string[] args)
{
    var domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName;
    Console.WriteLine(domainName);
    Console.ReadLine();
}

它在域连接的 Windows 8 机器上正确打印域名。但它不会在 windows server 2012 R2 机器上打印任何内容。

如何在 Windows server 2012 机器上获取域名。

【问题讨论】:

  • 服务器是域的一部分吗?它有多个接口吗?此检查中使用了哪一个?如果你禁用其他局域网,是否解决了?
  • @zchpit 用户域不一定是网络域。

标签: c#


【解决方案1】:

过去,我使用此代码来获取域名。它是通过该机器上的环境变量访问的。

string UserDomain = Environment.UserDomainName.ToString();
Console.WriteLine(UserDomain);

也许异常是由于在用户没有适当权限的服务器上运行它引起的。您是否尝试过使用 exe 执行“以管理员身份运行”或“以不同用户身份运行”?

【讨论】:

  • 我也尝试过使用管理员。但它不起作用。我已经尝试从环境变量中获取。它的工作。这是获取域名的正确方法吗?
  • Kumar,还有一些事情要看看它是否会引导你到任何地方:1)更具体地说,你是否打开了命令提示符并从该命令提示符运行你的 exe? 2)我会尝试运行命令“set”来查看是否返回所有环境变量并查看值。 3) 查看命令 iCacls。这可能有助于确定用户在该服务器上拥有哪些权限。 4)我认为异常指向某种权限/用户问题。
  • 只在当前用户账户与机器同域时有效!
【解决方案2】:

希望对你有用:

string domainName = System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain().Name;

【讨论】:

  • 把它包在 try/catch 中,因为它可以抛出。
  • 是的,它应该用 try/catch 包装,但我没有写一个方法,我只给出了一行代码。
  • 它的工作。这个怎么运作?为什么我的代码不起作用。那个方法有问题吗。
  • 获取异常:System.Security.Authentication.AuthenticationException: 用户名或密码不正确
  • 在支持的平台上看不到 Windows Server 2012 here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2016-11-11
相关资源
最近更新 更多