如何使用UserPrincipal对象查找机器名?

时间:2013-09-02 11:46:11

标签: c# c#-4.0

我得到了UserPrincipal类对象,想要找到机器名或IP地址或mac地址。 其中任何一个。 有可能这样做,如果是的话怎么样? 如果我要求任何不可能的含糊不清的东西,请道歉。

3 个答案:

答案 0 :(得分:3)

UserPrincipal对象仅识别用户,而不是机器(除非您的网络管理员决定将PC识别为用户)。

所以你的问题确实没有标准答案。如果有用户 - > pc链接,它可能存储在Active Directory或某个数据库中。请与您的系统管理员联系,了解如何建立该链接。

答案 1 :(得分:0)

要查找主计算机的名称,请使用

string hostName = System.Net.Dns.GetHostName();

如果您要查找主机的IP地址,请使用:

var address = System.Dns.GetHostEntry(hostName)
     .AddressList
     .FirstOrDefault(x => x.AddressFamily == AddressFamily.InterNetwork);

这为您提供了类型“InterNetwork”的第一个地址 - 即第一个已知的IP地址。当然,可能有多个IP地址链接到主机,在这种情况下,您应该迭代上面看到的AddressList属性。

答案 2 :(得分:-1)

试试这个:

string sysname = Environment.MachineName;
string sysname = System.Net.Dns.GetHostName();
string sysname = System.Windows.Forms.SystemInformation.ComputerName;
string sysname = System.Environment.GetEnvironmentVariable("COMPUTERNAME');

可能这就是你的意思:

来自here

ArrayList nets = new ArrayList();

DirectoryEntry entryPC;
entryPC = new DirectoryEntry();
entryPC.Path = "WinNT://domainName";

foreach (DirectoryEntry child in entryPC.Children)
{
   if (child.Name != "Schema")
   nets.Add(child.Name);
  }

return nets;