C# 使用C的networkclient操作系统信息
我正在开发一个应用程序,它可以扫描给定网络范围内的计算机。从找到的客户机中,我需要获得IP、主机名、Mac地址、操作系统信息等 现在,除了操作系统版本之外,我已经具备了上述所有功能。有人知道我是如何做到这一点的吗 我卡住了C# 使用C的networkclient操作系统信息,c#,networking,operating-system,C#,Networking,Operating System,我正在开发一个应用程序,它可以扫描给定网络范围内的计算机。从找到的客户机中,我需要获得IP、主机名、Mac地址、操作系统信息等 现在,除了操作系统版本之外,我已经具备了上述所有功能。有人知道我是如何做到这一点的吗 我卡住了 提前感谢,Christophe使用WMI,添加对-System.Management dll的引用并提供名称空间,使用以下代码和适当的参数- ManagementScope scope = new ManagementScope(); try
提前感谢,Christophe使用WMI,添加对-System.Management dll的引用并提供名称空间,使用以下代码和适当的参数-
ManagementScope scope = new ManagementScope();
try
{
ConnectionOptions conOptions = new ConnectionOptions();
options.Username = "<Provide username>";
options.Password = "<Provide password>";
options.EnablePrivileges = true;
options.Authority = "ntlmdomain:<domianname>";
scope = new ManagementScope(@"\\<IP address/machine name>\root\CIMV2", options);
scope.Connect();
SelectQuery query = new SelectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
using (ManagementObjectCollection queryCollection = searcher.Get())
{
foreach (ManagementObject m in queryCollection)
{
Console.WriteLine(string.Format("Computer Name : {0}", m["csname"]));
Console.WriteLine(string.Format("Windows Directory : {0}", m["WindowsDirectory"]));
Console.WriteLine(string.Format("Operating System: {0}", m["Caption"]));
Console.WriteLine(string.Format("Version: {0}", m["Version"]);
Console.WriteLine(string.Format("Manufacturer : {0}", m["Manufacturer"]));
}
}
}
catch (Exception ex)
{
}
您必须具有访问权限才能窃取此信息,否则您将获得访问权限异常。您可以使用System.Diagnostics中的Process类运行并分析结果:
var process = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = "cmd.exe",
Arguments = "/c nmap -O -v targethost",
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
}
};
process.Start();
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
// here you can parse to obtain the operating system
}
用C语言创建自己的OS detector会很困难,但如果您对它的工作原理感兴趣,可以在Nmap的这一章中找到:感谢各位提供的解决方案,但Nmap做得不是很好。。WMI解决方案也没有,因为它需要凭据才能登录到计算机。关键是一个应用程序可以从插入网络的笔记本电脑上运行,该应用程序应该扫描给定范围并显示在网络中找到的计算机。所以我想没有办法解决这个问题?因为获得证书是不可能的。无论如何谢谢你!克里斯托夫,