首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用c# wpf获取网络上所有已连接设备的操作系统名称

使用C# WPF获取网络上所有已连接设备的操作系统名称可以通过以下步骤实现:

  1. 获取本地网络的IP地址范围:可以使用System.Net.NetworkInformation命名空间下的NetworkInterface类和IPAddress类,通过遍历本地网络接口获取本地IP地址范围。
  2. 扫描IP地址范围内的设备:使用System.Net.NetworkInformation.Ping类,向每个IP地址发送Ping请求,通过判断是否有响应来确定设备是否在线。
  3. 获取在线设备的操作系统名称:可以通过使用System.Management命名空间下的ManagementObjectSearcherManagementObject类,利用WMI(Windows Management Instrumentation)查询操作系统相关信息。具体可以通过查询Win32_OperatingSystem类的Caption属性来获取操作系统名称。

以下是一种实现方式的示例代码:

代码语言:txt
复制
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;

namespace GetConnectedDevicesOS
{
    public class DeviceInfo
    {
        public string IpAddress { get; set; }
        public string OsName { get; set; }
    }

    public class DeviceScanner
    {
        public List<DeviceInfo> GetConnectedDevicesOS()
        {
            List<DeviceInfo> connectedDevices = new List<DeviceInfo>();

            // 获取本地网络的IP地址范围
            List<IPAddress> localIpAddresses = GetLocalIpAddresses();
            foreach (IPAddress localIpAddress in localIpAddresses)
            {
                // 扫描IP地址范围内的设备
                List<IPAddress> connectedIpAddresses = GetConnectedIpAddresses(localIpAddress);
                foreach (IPAddress connectedIpAddress in connectedIpAddresses)
                {
                    // 获取在线设备的操作系统名称
                    string osName = GetDeviceOsName(connectedIpAddress);

                    // 构造设备信息对象
                    DeviceInfo deviceInfo = new DeviceInfo
                    {
                        IpAddress = connectedIpAddress.ToString(),
                        OsName = osName
                    };

                    connectedDevices.Add(deviceInfo);
                }
            }

            return connectedDevices;
        }

        private List<IPAddress> GetLocalIpAddresses()
        {
            List<IPAddress> localIpAddresses = new List<IPAddress>();

            NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface networkInterface in networkInterfaces)
            {
                if (networkInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet ||
                    networkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
                {
                    IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
                    foreach (IPAddressInformation ipInformation in ipProperties.UnicastAddresses)
                    {
                        if (ipInformation.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            localIpAddresses.Add(ipInformation.Address);
                        }
                    }
                }
            }

            return localIpAddresses;
        }

        private List<IPAddress> GetConnectedIpAddresses(IPAddress localIpAddress)
        {
            List<IPAddress> connectedIpAddresses = new List<IPAddress>();

            Ping pingSender = new Ping();
            string baseIpAddress = localIpAddress.ToString();
            baseIpAddress = baseIpAddress.Substring(0, baseIpAddress.LastIndexOf('.') + 1);

            for (int i = 1; i < 255; i++)
            {
                string ipAddress = baseIpAddress + i.ToString();
                PingReply reply = pingSender.Send(ipAddress, 200);

                if (reply.Status == IPStatus.Success)
                {
                    connectedIpAddresses.Add(IPAddress.Parse(ipAddress));
                }
            }

            return connectedIpAddresses;
        }

        private string GetDeviceOsName(IPAddress ipAddress)
        {
            string osName = string.Empty;

            try
            {
                ConnectionOptions connectionOptions = new ConnectionOptions();
                ManagementScope managementScope = new ManagementScope($"\\\\{ipAddress}\\root\\CIMv2", connectionOptions);
                ObjectQuery objectQuery = new ObjectQuery("SELECT Caption FROM Win32_OperatingSystem");
                ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(managementScope, objectQuery);
                ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get();

                foreach (ManagementObject managementObject in managementObjectCollection)
                {
                    osName = managementObject["Caption"].ToString();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return osName;
        }
    }
}

这是一个简单的C# WPF应用程序,通过调用GetConnectedDevicesOS方法可以获取所有已连接设备的IP地址和操作系统名称。注意,该示例代码中未涉及腾讯云的产品和链接地址,如需添加相关推荐,可以根据实际需求自行添加。

相关搜索:使用iOS应用程序获取所有已连接的mac设备信息使用RxAndroidBle从已连接的设备获取订阅如何使用libimobiledevice获取已连接设备的ECID?如何在Android上获取本地网络所有设备的IP地址和名称如何获取配对(在移动设置中已连接)蓝牙设备的名称?Xamarin形成了如何获取设备所连接的wi-fi网络的名称如何使用C++显示连接到网络的设备的名称和IP地址如何使用Flutter获取设备上已安装应用程序的大小?如何使用PowerShell获取所有已安装的Windows更新、名称和KB号?如何使用C#在xamarin.forms中获取所有已启用的键盘如何使用Python ScriptEngine获取C#中的所有局部变量名称和值?iOS 14:如何延迟“[应用程序名称]想要查找并连接到本地网络上的设备”通知?您是否可以使用macOS“日志流”或“日志显示”从已连接的iOS设备获取消息?使用C# Datastax CassandraCSharpDriver.Graph获取连接到已知折点的所有未知折点此递归函数用于返回所有已连接节点的列表,其中给定了使用python的网络图中的某个节点从C应用程序(Linux)获取已连接的USB摄像头(网络摄像头)的v4l2设备号如何在没有互联网连接的情况下在CN1设备上获取网络提供的日期和时间?是否可以使用adb命令通过wifi连接到同一网络上的任何android设备?在Windows Vista上获取我使用C#.Net连接的无线网络的SSID从2个不同的服务器上的2个不同的数据库中获取数据,并使用C#连接它们
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

尝新体验ASP.NET Core 6预览版本中的最小Web API(minimal APIS)新特性

与之前的ASP.NET Core Web API相比,最小Web API在启动模板和框架结构上都有些不同。...准备工作 在开始创建最小Web API之前,请确保开发环境中已安装了.NET SDK 6.0.100-preview.7.21379.14(当前最新的.NET SDK版本),在Windows操作系统中,...你可以使用.NET Cli命令来查看,比如: dotnet --info 运行结果如下图: 如果需要查看当前环境已安装的.NET模板,运行如下命令: dotnet new -l 运行结果如下: Template...[C#],F#,VB Test/xUnit 创建最小API程序项目 在.NET Core中创建程序的方式有多种,可以使用命令行工具执行dotnet new 名称> 名称>创建,也可以使用IDE...使用Visual Studio创建最小API项目 使用Visual Studio创建最小API项目,请确保已安装Visual Studio 2022 17.0.0 Preview 3.0(当前最新版本)

5.2K30

.NET Core.NET5.NET6 开源项目汇总9:客户端跨平台UI框架

系列目录 【已更新最新开发文章,点击查看详细】 .NET Core 实现了跨平台,支持在 Windwos、Linux、macOS上开发与部署,但是也仅限于Web应用程序。...因为它们的UI与Windwos操作系统的底层技术紧密关联,所以在Linux、macOS上无法实现相同的UI功能。目前对于跨平台的桌面端UI需求,.NET还没有统一完整的解决方案。...产品特征 针对所有操作系统和浏览器 UNO是唯一用于创建真正的单一来源、多平台应用程序的开放源代码平台。跨本机移动、web和桌面重用99%的业务逻辑和UI层。...C#和XAML提高生产率 使用C#和XAML的熟悉性和丰富性,以及热重新加载、热重启、编辑和继续等方面的生产力提升开发效率。 ? 强大的IDE支持。...简洁、直观、强悍的netcore跨平台UI开发框架。框架理念和WPF类似,但是没有Xaml,直接用CSS和C#代码描述。

11.7K21
  • WPF入门到放弃(二) | 初识XAML

    WPF入门到放弃(一) | 安装与创建 说明: 本文主要介绍WPF(Windows Presentation Foundation),是微软推出的一项基于windows操作系统、.NET平台的C/S客户端构建技术...下面来具体学习一下,上一节结束时建的项目: 上面一段代码是自动生成的,让我们来分解此XAML代码,以便更好地了解它。...xmlns是xml-namespace的缩写,是用来定义名称空间的,当来源不同的类重名时,可以使用名称空间加以区分。xmlns后可以跟一个可选的映射前缀,之间用冒号分割。...下面看一下如何将C#中的类如何在xaml中使用。...好了这期的xaml的学习就到这里,主要是对命名空间的一些理解。需要反编译工具ILSpy的可以联系管理员获取,以下是WPF按照功能分类的控件,后期会做个串口调试助手实战来学习。

    1.8K30

    使用 .NET 构建 UI 界面的各种方式

    好处有这些: 1 可以使用 side-by-side / self-contained 的部署方式,也就是用户电脑上不一定要安装相应的 .NET Core 版本,应用程序可以自己带上所有的框架依赖 2...可以用到最新的 C# 特性和运行时 API 3 得益于 .NET Core 基础库本身的性能优化,一些操作会获得更好的性能 4 可以使用 dotnet cli 来完成很多 devops 相关的工作...UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?...,使得开发者可以更轻松地创建跨不同 Windows 版本和设备的应用程序。...Windows 软件还会翻新吗-51CTO.COM UWP 一个技术上成功但商业上失败的框架之死;一个现代的操作系统究竟应该提供什么?

    10000

    dotnet 从入门到放弃的 500 篇文章合集

    本文是记录我从入门到放弃写的博客 博客包括 C#、WPF、UWP、dotnet core 、git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到放弃的...,求距离的点 C# 强转会不会抛出异常 C# 很少人知道的科技 C# 快速释放内存的大数组 C# 搜索算法 C# 获得设备usb信息 C# 转换类型和字符串 C# 遍历枚举 C# 金额转中文大写 C#将...win10 uwp 绑定密码 win10 uwp 绑定静态属性 win10 uwp 自定义控件初始化 win10 uwp 获取指定的文件 win10 uwp 获取按钮鼠标左键按下 win10 uwp...DataGridTextColumn wpf 绑定 TextLength WPF 编译为 AnyCPU 和 x86 有什么区别 WPF 获得触摸精度和触摸点 WPF 获得触笔悬停元素上 WPF 解决...解决 VS 跳转定义和 Resharper 重复 解决 Win10 UWP 无法使用 ss 连接 让 AE 输出 MPEG 调试 ms 源代码 贡献自己的服务器搭建tor中转 软件设计 白话依赖注入

    10.4K20

    .NET周刊【9月第5期 2024-09-29】

    C#实现信创国产Linux桌面录制成MP4(源码,银河麒麟、统信UOS) https://www.cnblogs.com/shawshank/p/18427307 文章介绍在国产操作系统上使用跨平台技术进行桌面录制的方法...技术上使用ASP.NET MVC、API和SqlSugar,实现灵活的RBAC权限控制和多租户功能。前端以LayUI为主,集成了诸如文件管理、流程设计和响应式设计,支持多种设备。...强调日志事件的重要性和如何通过属性名称提高可读性。Serilog 使用 C# 格式字符串的超集,属性用大括号括住,支持运算符和格式后缀。日志级别从详细到致命逐次递增,信息级别是分析事件流的关键。...该解决方案支持跨平台部署,提供直观的可视化配置界面,可连接多种设备实现双向数据通信。支持边缘计算,为数据处理提供支持。内置Mqtt和OPCUA服务,可轻松与MES、SCADA交互数据。...使用C#和WPF构建,以探索AI Agent应用,主要涉及国产或开源大语言模型。

    9610

    .NET周刊【11月第1期 2024-11-03】

    系统支持桌面和移动端,适用于多种数据库,可在多种操作系统上运行。功能包括考试发布、试卷管理、阅卷和问卷调查等,支持国产化部署。文章详细描述了系统的技术架构、功能特色和部署方法。...系统架构使用.net core, SQL Server和MySQL,稳定实现消息处理中间件和TCP/IP长连接等功能。客服端程序用WPF框架,提供较高开发效率和稳定性。...处理网络异常时,系统通过检测Socket对象属性和实施心跳机制来监测网络连接状态,如中断立即处理。整个系统的开发展示了.net技术体系的高效性和可扩展性。...项目源码和示例可以在GitHub上获取。...如何使用 Arm 处理器上的 Visual Studio 在开发环境中运行 SQL Server。

    7210

    .NET周刊【11月第1期 2024-11-03】

    系统支持桌面和移动端,适用于多种数据库,可在多种操作系统上运行。功能包括考试发布、试卷管理、阅卷和问卷调查等,支持国产化部署。文章详细描述了系统的技术架构、功能特色和部署方法。...系统架构使用.net core, SQL Server和MySQL,稳定实现消息处理中间件和TCP/IP长连接等功能。客服端程序用WPF框架,提供较高开发效率和稳定性。...处理网络异常时,系统通过检测Socket对象属性和实施心跳机制来监测网络连接状态,如中断立即处理。整个系统的开发展示了.net技术体系的高效性和可扩展性。...项目源码和示例可以在GitHub上获取。...如何使用 Arm 处理器上的 Visual Studio 在开发环境中运行 SQL Server。

    9700

    .NET周刊【2月第1期 2024-02-04】

    【OpenVINO™】在 Windows 上使用 OpenVINO™ C# API 部署 Yolov8-obb 实现任意方向的目标检测 https://www.cnblogs.com/guojin-blogs...,特别适合于硬件性能低、网络环境差的远程设备和应用场景。...广泛应用于物联网设备之间的通信,如卫星通信传感器、医疗设备和家居自动化。...文章详细说明了在Linux上使用C#和Visual Studio Code设置项目环境,创建控制台项目,添加Nuget包,以及安装依赖项目的步骤。...加速内循环生产力 断点组 增强的文本可视化工具 非模态可视化工具 调用堆栈搜索 改进的并行堆栈窗口 永久重新连接到调试器进程 CMake调试器 使外部源代码更智能、更快速 跨平台调试支持 使用 Visual

    20610

    .NET Core.NET5.NET6 开源项目汇总12:WPF组件库2

    系列目录 【已更新最新开发文章,点击查看详细】 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework...1、Fluent.Ribbon   Fluent/Ribbon是微软在其最新桌面操作系统Windows 7中使用的图形用户界面。 Windows平台的进化,伴随着系统图形界面的重新设计。...它是SharpDevelop 4.x“Mirador”及更高版本中基于WPF的文本编辑器的名称。它也被用于ILSpy和许多其他项目。 ?...使用它来构建外观专业、现代且易于使用的WPF应用程序。它已经在这里、Codeplex和NuGet上下载了100多万次。 ? 包含以下控件 ? Plus版本中的其他控件和功能 ?...CefSharp采用现代网络标准,支持HTML5、JavaScript、CSS3和HTML5音频/视频元素。通过WebGL支持3D内容,WebGL使用OpenGL/DirectX进行硬件加速渲染。

    2.6K10

    .NET 体系概览图集- 2024 最全总结

    最后的4.8.*版本依然还在维护,还是可以使用的,支持的最低操作系统是Windows 7。...同时,.NET Framework也作为Windows操作系统的组件内置在操作系统中。 同一台电脑上可以同时安装多个版本的 .NET Framework 版本。....NET 7 统一了所有不同的 .NET 开发工具组件,使开发人员能够在相同的基础类库 (BCL)、运行时和编译器上构建所有类型的应用(桌面、移动、Web 等)。...如果你想要一个命令行界面(CLI)控制,那么.NET core是最好的选择。 仅在Windows平台上运行。好像不算理由。基于 WinForms 或 WPF 应用程序,.NET7已支持。...DLL:Dynamic Link Library,动态链接库,包含了已编译的C#代码、元数据和资源,可以在多个应用程序之间共享和重用。

    1.2K10

    dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用

    本文来安利大家一个有趣而且强大的库,通过 F# 和 C# 混合编程编写 WPF 应用,可以在 WPF 中使用到 F# 强大的数据处理能力 在 GitHub 上完全开源 Elmish.WPF 库,请看 https...://github.com/elmish/Elmish.WPF 在阅读本文之前,我期望大家已了解部分 F# 的知识。...这个例子的代码完全放在 Elmish.WPF 库里,可以通过 https://github.com/elmish/Elmish.WPF 获取所有代码 咱依然通过 VS 创建一个空白的 C# 空白 WPF...程序,在此例子里面,几乎没有 C# 多少的戏份,只是为了使用 C# 更好的驱动 WPF 程序而已,因为部分初始化方法和类型等在 F# 写起来的代码量可不少。...Program 类是在 F# 项目里面编写的,也就是说 C# 语言只是胶水,用来做初始化的连接 接下来咱来创建一个简单的界面,这个界面如下 ?

    1.8K20

    C#.NET.NET Core优秀项目和框架精选(23年10月更新,欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)

    坑已挖,欢迎大家踊跃提交PR或者在该️C#/.NET/.NET Core优秀项目和框架Issues中留言(让优秀的项目和框架不被埋没),我会定期收录、公众号推广和分享。...它的设计目标是简单易用、高性能、可扩展性强,并支持大规模并发连接。BeetleX基于.NET Core实现,支持跨平台运行,可以运行在Windows、Linux和macOS等系统上。...通过 Keras.NET,您可以在 .NET 应用程序中使用 Keras 的高级 API 构建和训练神经网络模型。...是一款在Windows操作系统上的实用工具,它提供了一种快速预览文件内容的方式。...FFMpegCore 具有跨平台支持,可以在 Windows、Linux 和 macOS 等操作系统上运行。

    3.7K01

    .NET周刊【9月第1期 2024-09-01】

    通过可视化配置,可以轻松连接各种设备和系统,实现与各种物联网平台的双向数据通讯,并支持边缘计算。文章还分享了项目的源代码、在线演示链接及开源地址,并推荐了关注更多.NET相关优秀项目与框架。...项目处于alpha阶段,并已收录到C#/.NET/.NET Core优秀项目和框架精选中,源码和使用文档可在GitHub获取。....NET 网络唤醒 https://www.cnblogs.com/kybs0/p/18389269 本文介绍如何通过网络唤醒已关机设备。...首先设备需支持WakeOnLan,主板需在BIOS中开启相关功能。使用有线网络,确保设备和唤醒设备在同一局域网。...用户可以通过可视化配置轻松连接各种设备和系统,实现双向数据通讯,支持边缘计算。文中提供了项目源码、在线演示效果和使用文档链接,鼓励开发者支持和参与项目。

    4910

    .NET周刊【5月第3期 2024-05-19】

    国内文章 WPF 使用 Shape 实现复杂线条动画 https://www.cnblogs.com/czwy/p/18192720 文章介绍了利用 WPF 的 Shape 和动画功能,模仿 CSS/SVG...通讯调试工具使用 C#、WPF 等技术开发,支持 Modbus RTU 和 MQTT 调试,界面色彩丰富。...项目源码和使用文档已开源在 GitHub,且被收录至 C#/.NET/.NET Core 优秀项目和框架精选。...Mono 框架是跨平台的,支持 Linux、macOS、Windows 等操作系统,包含 C#编译器、.NET 运行环境和类库。...泛型的基本语法包括泛型方法与类的定义及实例化,泛型接口、委托的声明和泛型约束的使用。泛型在集合类、数据结构、算法、数据库操作和网络编程等多个场景下都有广泛应用。

    12300

    WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码

    PS_3 带来了比 PS_2 更多的功能,但需要注意,不是所有的显卡设备都支持 PS_3,这其中就包括了至今仍在广泛使用的 Windows 远程桌面(RDP)。...所以,如果希望让你的着色器代码能在目前所有设备上正常运行,建议使用 PS_2;如果不在乎这一点,或者你有其他低性能的方法(例如用 CPU 画位图)来替代 PS_3,那么还是可以继续用的。...生成的 C# 代码 继续切换一个标签,你可以看到 Shazzam 为你生成的 C# 代码。实际上稍后你就可以直接使用这份代码驱动起你刚刚编写的特效。 代码风格使用了我们刚刚设置的一些全局参数。...留意你的 C# 代码,里面是编写了像素着色器的路径的: 如果你的程序集名称是其他名称,需要修改下面 Walterlv.Effects 的部分改成你的程序集名称; 如果你放到了其他的子文件夹中,你也需要在下面...程序中使用这个特效 要在 WPF 程序中使用这个特效,则设置控件的 Effect 属性,将我们刚刚生成的像素着色器对应 C# 代码的类名写进去即可。

    96520

    ☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》

    IP地址的作用: ​ IP 地址的作用是标识网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。...网络套接字(英语:Network socket;又译网络套接字、网络接口、网络插槽)在计算机科学中是电脑网络中进程间数据流的端点,是一种操作系统提供的进程间通信机制。...A:不是,应用软件是无法直接通过网卡接收数据的,它需要调用操作系统接口,由操作系统通过网卡接收数据,把接收的数据写入到接收缓冲区(内存中的一片空间),应用程序再从接收缓存区获取客户端发送的数据。...C# Modbus TCP 源代码 C# 仓库管理系统源码 C# 欧姆龙通讯Demo C#+WPF+SQL目前在某市上线的车管所摄像系统 2021C#与Halcon...集成Halcon的深度学习软件 C#集成Halcon的深度学习软件,带[MNIST例子]数据集 C#支持等比例缩放拖动的halcon WPF开源窗体控件 2021年Labview

    84320
    领券