C# 如何获取设备管理器里面的所有详细信息,特别是“父系”

sasa3302 2018-01-30 09:51:13
如题,win7系统里面的设备管理器里的详细信息,其实是想知道某个USB口连接的安卓设备的序列号,通过查看Android Device --> Android Composite ADB Interface 的详细信息,找到“父系”属性,值包含了设备的序列号。找了很多方法,都没有包含这个,请帮忙看看,谢谢。
...全文
2548 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
aa243856 2018-09-08
  • 打赏
  • 举报
回复
怎么获取详细信息里面的“位置”?
  • 打赏
  • 举报
回复
请教下:wbemtest.exe,这个软件是系统自带的吗?为什么找不到?2楼提供的工具怎样查看设备的信息?麻烦帮忙解答下,谢谢
holkie 2018-02-02
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace ConsoleApplication2
{
class Program
{
public static string[] MulGetHardwareInfo(string hardType, string propKey)
{

List<string> strs = new List<string>();
try
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType))
{
var hardInfos = searcher.Get();
foreach (var hardInfo in hardInfos)
{
strs.Add(hardInfo.Properties[propKey].Value.ToString());
}
searcher.Dispose();
}
return strs.ToArray();
}
catch
{
return null;
}
finally
{ strs = null; }
}
static void Main(string[] args)
{
string[] ss = MulGetHardwareInfo("Win32_USBHub", "DeviceID");
for (int i = 0; i < ss.Length; i++)
{
Console.WriteLine(ss[i]);
}
}
}
}


holkie 2018-01-31
  • 打赏
  • 举报
回复
引用 5 楼 holkie 的回复:
http://blog.csdn.net/zhoufoxcn/article/details/2044246

LZ可以看看这个,用wbemtest.exe找到你要查找的的属性,在代码中编写具体的 wql 查询


tonysungood000 2018-01-31
  • 打赏
  • 举报
回复
引用 4 楼 sasa3302 的回复:
[quote=引用 2 楼 tonysungood000 的回复:] http://download.csdn.net/download/tonysungood000/10132587 你可以查查
谢谢你的工具,获取到的东西相对较全,但是有个问题就是,工具获取到的USB设备的HardwareID信息不全,例如,从设备管理器里面获取到的是USB\VID_05C6&PID_90B8&REV_0409&MI_04,但是工具里面的获取的是USB\VID_05C6&PID_90B8&REV_0409,少了最后一截。[/quote] 设备管理器中的有些信息是多个子信息的组合
holkie 2018-01-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhoufoxcn/article/details/2044246 LZ可以看看这个,用wbemtest.exe找到你要查找的的属性,在代码中编写具体的 wql 查询
sasa3302 2018-01-31
  • 打赏
  • 举报
回复
引用 2 楼 tonysungood000 的回复:
http://download.csdn.net/download/tonysungood000/10132587 你可以查查
谢谢你的工具,获取到的东西相对较全,但是有个问题就是,工具获取到的USB设备的HardwareID信息不全,例如,从设备管理器里面获取到的是USB\VID_05C6&PID_90B8&REV_0409&MI_04,但是工具里面的获取的是USB\VID_05C6&PID_90B8&REV_0409,少了最后一截。
sasa3302 2018-01-31
  • 打赏
  • 举报
回复
引用 1 楼 From_TaiWan 的回复:
https://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices
通过文章的方法,的确能获取到这个序列号了,即PNPDeviceID ,但是只是部分内容,获取到完整的详细信息列表,才能做一一对应。
sasa3302 2018-01-31
  • 打赏
  • 举报
回复
引用 11 楼 holkie 的回复:
hardType 就是枚举类,例如 Win32_PnPEntity,Win32_PnPDevice 等等,
propKey就是包含设备信息的属性段


摸索了一下,感觉就只有Win32_PnPEntity能够查询到,如果查询Win32_PnPDevice会报错
holkie 2018-01-31
  • 打赏
  • 举报
回复
hardType 就是枚举类,例如 Win32_PnPEntity,Win32_PnPDevice 等等,
propKey就是包含设备信息的属性段
sasa3302 2018-01-31
  • 打赏
  • 举报
回复
引用 9 楼 holkie 的回复:
[quote=引用 8 楼 sasa3302 的回复:] [quote=引用 7 楼 holkie 的回复:] [quote=引用 5 楼 holkie 的回复:] http://blog.csdn.net/zhoufoxcn/article/details/2044246 LZ可以看看这个,用wbemtest.exe找到你要查找的的属性,在代码中编写具体的 wql 查询
[/quote] 这个工具和2楼的兄弟的工具类似的,谢谢[/quote] 这是Windows系统自带的,在运行里输入wbemtest就行了,先用这个查一下你要查看的信息包含在哪个属性,然后代码实现。 例如这个查端口的函数:

/// WMI取硬件信息
        /// </summary>
        /// <param name="hardType"></param>
        /// <param name="propKey"></param>
        /// <returns></returns>
        public static string[] MulGetHardwareInfo(HardwareEnum hardType, string propKey)
        {

            List<string> strs = new List<string>();
            try
            {
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType))
                {
                    var hardInfos = searcher.Get();
                    foreach (var hardInfo in hardInfos)
                    {
                        if (hardInfo.Properties[propKey].Value.ToString().Contains("COM"))
                        {
                            strs.Add(hardInfo.Properties[propKey].Value.ToString());
                        }

                    }
                    searcher.Dispose();
                }
                return strs.ToArray();
            }
            catch
            {
                return null;
            }
            finally
            { strs = null; }
        }
     //通过WMI获取COM端口
                string[] ss = MulGetHardwareInfo(HardwareEnum.Win32_PnPEntity, "Name");
[/quote] /// <param name="hardType"></param> /// <param name="propKey"></param> hardType和propKey是什么呢
holkie 2018-01-31
  • 打赏
  • 举报
回复
引用 8 楼 sasa3302 的回复:
[quote=引用 7 楼 holkie 的回复:] [quote=引用 5 楼 holkie 的回复:] http://blog.csdn.net/zhoufoxcn/article/details/2044246 LZ可以看看这个,用wbemtest.exe找到你要查找的的属性,在代码中编写具体的 wql 查询
[/quote] 这个工具和2楼的兄弟的工具类似的,谢谢[/quote] 这是Windows系统自带的,在运行里输入wbemtest就行了,先用这个查一下你要查看的信息包含在哪个属性,然后代码实现。 例如这个查端口的函数:

/// WMI取硬件信息
        /// </summary>
        /// <param name="hardType"></param>
        /// <param name="propKey"></param>
        /// <returns></returns>
        public static string[] MulGetHardwareInfo(HardwareEnum hardType, string propKey)
        {

            List<string> strs = new List<string>();
            try
            {
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType))
                {
                    var hardInfos = searcher.Get();
                    foreach (var hardInfo in hardInfos)
                    {
                        if (hardInfo.Properties[propKey].Value.ToString().Contains("COM"))
                        {
                            strs.Add(hardInfo.Properties[propKey].Value.ToString());
                        }

                    }
                    searcher.Dispose();
                }
                return strs.ToArray();
            }
            catch
            {
                return null;
            }
            finally
            { strs = null; }
        }
     //通过WMI获取COM端口
                string[] ss = MulGetHardwareInfo(HardwareEnum.Win32_PnPEntity, "Name");
sasa3302 2018-01-31
  • 打赏
  • 举报
回复
引用 7 楼 holkie 的回复:
[quote=引用 5 楼 holkie 的回复:] http://blog.csdn.net/zhoufoxcn/article/details/2044246 LZ可以看看这个,用wbemtest.exe找到你要查找的的属性,在代码中编写具体的 wql 查询
[/quote] 这个工具和2楼的兄弟的工具类似的,谢谢
tonysungood000 2018-01-30
  • 打赏
  • 举报
回复
http://download.csdn.net/download/tonysungood000/10132587 你可以查查

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧