本机信息与局域网信息的获取,需要用到Management这个类,这个类的功能十分强大,可以实现的事情也很多,下面我来列举部分实现本机与局域网信息的例子。
首先对项目添加System.Management引用,然后在代码上面输入using System.Management
下面来看看如何取得本机信息:
private static string ipAddress = "";
static void Main(string[] args)
{
string macAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mac = mc.GetInstances();
foreach (ManagementObject mo in mac)
{
if ((bool)mo["IPEnabled"] == true)
{
macAddress += mo["MacAddress"].ToString();
}
}
macAddress = macAddress.Replace(':', '-');
IPAddress[] ipAddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < ipAddressList.Length; i++)
{
ipAddress += ipAddressList[i].ToString();
}
Console.WriteLine(macAddress); //MacAddress
Console.WriteLine(ipAddress); //IPAddress
Console.WriteLine(Dns.GetHostName()); //HostName
Console.WriteLine(Environment.UserName); //UserName
Console.WriteLine(Environment.UserDomainName); //DomainName
Console.ReadLine();
}
上面有代码会输出如下信息:
00-1E-C9-29-59-D7
192.168.1.1
NON-Alex
Alex
CompanyLan
下面是通过IP进行判断,局域网里面的本网段主机:
private static void HostsInit()
{
IPHostEntry host = new IPHostEntry();
string fristIP = ipAddress.Substring(0, ipAddress.LastIndexOf('.') + 1);
for (int i = 100; i <= 254; i++)
{
Dns.BeginGetHostByName(fristIP + i, new AsyncCallback(HostsInitCallback), host);
}
}
private static void HostsInitCallback(IAsyncResult ar)
{
try
{
IPHostEntry host = Dns.EndGetHostByName(ar);
IPHostEntry host1 = Dns.GetHostByAddress(host.AddressList[0]);
if (host1.HostName.Trim() != Dns.GetHostName())
{
Console.WriteLine("列出局域网本网段的电脑主机名:");
Console.WriteLine(host1.HostName);
//在这里把文件神不知鬼不觉的复制给他们,
//这里我只实现了共享的或映射驱动器传送,
//如果你公司的电脑是组成一个域的,那么强制传送文件也是可以实现的(因为我们是公司IT先锋,总会知道域里超级用户与密码),
//不知那个园友来补充,无论怎样都是强制的传送给他们
}
}
catch { }
}
{
IPHostEntry host = new IPHostEntry();
string fristIP = ipAddress.Substring(0, ipAddress.LastIndexOf('.') + 1);
for (int i = 100; i <= 254; i++)
{
Dns.BeginGetHostByName(fristIP + i, new AsyncCallback(HostsInitCallback), host);
}
}
private static void HostsInitCallback(IAsyncResult ar)
{
try
{
IPHostEntry host = Dns.EndGetHostByName(ar);
IPHostEntry host1 = Dns.GetHostByAddress(host.AddressList[0]);
if (host1.HostName.Trim() != Dns.GetHostName())
{
Console.WriteLine("列出局域网本网段的电脑主机名:");
Console.WriteLine(host1.HostName);
//在这里把文件神不知鬼不觉的复制给他们,
//这里我只实现了共享的或映射驱动器传送,
//如果你公司的电脑是组成一个域的,那么强制传送文件也是可以实现的(因为我们是公司IT先锋,总会知道域里超级用户与密码),
//不知那个园友来补充,无论怎样都是强制的传送给他们
}
}
catch { }
}
上面有代码会输出如下信息:
NON-ITLi
NON-CSLisa
/Files/whtydn/ConsoleApplication1.rar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?