c# - 如何查看机器类型?笔记本电脑还是台式机?

标签 c# wmi

如何查看当前机器类型?笔记本电脑还是台式机?

我从 http://blog.csdn.net/antimatterworld/archive/2007/11/11/1878710.aspx 得到这个,它在我的家用机器(笔记本电脑上的 Win2003)上运行良好,它返回“可移植”,但在我的工作机器上(笔记本电脑上的 Vista)失败,它返回“其他”。

代码如下:


public enum ChassisTypes
{
    Other = 1,
    Unknown,
    Desktop,
    LowProfileDesktop,
    PizzaBox,
    MiniTower,
    Tower,
    Portable,
    Laptop,
    Notebook,
    Handheld,
    DockingStation,
    AllInOne,
    SubNotebook,
    SpaceSaving,
    LunchBox,
    MainSystemChassis,
    ExpansionChassis,
    SubChassis,
    BusExpansionChassis,
    PeripheralChassis,
    StorageChassis,
    RackMountChassis,
    SealedCasePC
}

public static ChassisTypes GetCurrentChassisType()
{
    ManagementClass systemEnclosures = new ManagementClass("Win32_SystemEnclosure");
    foreach (ManagementObject obj in systemEnclosures.GetInstances())
    {
        foreach (int i in (UInt16[  ])(obj["ChassisTypes"]))
        {
             if (i > 0 && i < 25)
            {
                return (ChassisTypes)i;
            }
        }
    }
    return ChassisTypes.Unknown;
}

最佳答案

这是一篇很好的 Microsoft 文章,建议查看其他几个 WMI 类以更好地了解计算机是笔记本电脑还是台式机:
http://technet.microsoft.com/en-us/library/cc180825.aspx

Win32_SystemEnclosure, ChassisTypes(1)=10
Win32_Battery or Win32_PortableBattery
Win32_PCMCIAController
Win32_DriverVXD.Name = "pccard"
Win32_ComputerSystem.Manufacturer
Win32_ComputerSystem.Model

它还建议在注册表中查找电源方案。

关于c# - 如何查看机器类型?笔记本电脑还是台式机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013354/

相关文章:

c# - 如何使用 C# 在 DNS 中创建 SRV 记录

c# - 从 gridview 插入数据时处理 'NULL' 和键约束

c# - 使用数据库的 FluentValidation 唯一名称验证

windows - Windows 中使用 Win32_NTLogEvent 类的相关登录和注销事件

c++ - 如何在 C++ 中获取 Wmi 连接的 SeSecurityPrivilege

c# - 从 ManagementObjectCollection 中的所有对象获取所有非空属性

c# - 将 WMI CimType 转换为 System.Type

c# - 我可以使用 Telegram 机器人删除用户消息吗?

c# - 使用 ALL 的 LINQ 查询

c# - C# 是否支持使用静态局部变量?