翻译《The Old New Thing》- How do I obtain the computer manufacturer’s name?

How do I obtain the computer manufacturer's name? - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20081218-00/?p=19783

Raymond Chen 2008年08月08日


如何获取计算机制造商的名字?

        一位客户想要一种方法来确定计算机制造商的名称。例如,他们想要通过某种函数调用并得到返回结果“IBM”、“Compaq”或“Dell”。

        我不知道他们为什么想要这些信息,目前我也不关心。

        当然,当你寻找信息时,你不会去搜索 MSDN;那是疯狂的人会做的事情。不,让我们直接启动注册表编辑器(regedit)并按 Ctrl+F(搜索)。

我无法想象有多少应用程序兼容性错误是由注册表编辑器中那个“有用”的 Ctrl+F 对话框造成的。

        客户找到了用于自定义系统控制面板的注册表键,以及也参与其中的 OEMINFO.INI 文件。但随后出现了可靠性问题。

        毕竟,由于它只是一个注册表键和一个 INI 文件,用户可以编辑它并让它显示任何他们想要的内容。

        如果客户擦除了他们的硬盘并从头开始重新安装 Windows,那么这些信息也会丢失。

        这位客户想要某种程度的保证,即如果计算机声明它是 Dell,那么它确实是 Dell。

        进入 WMI(Windows 管理工具)。

        脚本团队对 WMI 非常熟悉。如果你搜索短语“from Win32_ComputerSystem”,你将从《嘿,脚本小子!》栏目中找到一次又一次的命中。

        恰好 WMI 也暴露了计算机制造商信息。

        如果你查看脚本团队发布的脚本,可能三分之二的脚本都遵循这种模式:

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colItems = objWMIService.ExecQuery(“Select * from something“)
For Each objItem in colItemsWscript.Echo objItem.something
Next

我们所要做的就是填充“something”。

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colItems = objWMIService.ExecQuery(“Select * from Win32_ComputerSystem“)
For Each objItem in colItemsWscript.Echo “System Name: ” & objItem.NameWscript.Echo “Manufacturer: ” & objItem.ManufacturerWscript.Echo “Model: ” & objItem.ModelWscript.Echo
Next

        好的,我们可以利用 WMI 获取这些信息。但它有多可靠呢?

        嗯,WMI 团队告诉我,他们通过直接查询 SMBIOS 来获取信息,所以它的可靠性和你的 BIOS 一样。

        主要制造商会把他们的名字写入 BIOS,但如果你是在家用机器上运行,那么这些值就是主板上附带的。

        BIOS 制造商通常会在他们的 SMBIOS 中放置占位符字符串,将制造商设置为一个通用字符串,比如“Manufacturer”。

        当主板制造商安装 BIOS 时,他们应该用更有意义的内容替换占位符字符串,但大多数制造商并不在意。

        结果是,你从当地电脑商店购买零件组装的机器,制造商很可能只会显示“Manufacturer”。

        总结来说,如果你查询 WMI 获取计算机制造商,如果返回“Dell”,那么你可以相当确定你有一台 Dell 计算机。

或者有人非常闲得无聊,烧录了一个自定义 BIOS,上面写着“Dell”。

        另一方面,如果返回的是“Manufacturer”,那么你就仍然不清楚。

        你所知道的只是你有某种通用计算机。

        即使主要制造商会把他们的名字写入 BIOS,我听说如果你把你的电脑送回制造商,他们更换主板时,有时会忘记在更换的主板的 BIOS 中烧录他们的名字。

        因此,即使是品牌计算机,你也可能看到“Manufacturer”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈-20.有效的括号

20. 有效的括号 - 力扣(LeetCode) 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须…

C语言为什么在使⽤图形函数时要⾸先初始化图形模式?

一、问题 在TC 中开发图形程序,为什么要先执⾏ initgraph( ) ,这个函数是⼲什么⽤的? 二、解答 在DOS 环境下,PC屏幕的显示分为字符模式和图形模式两种。TC 2.0 默认⼯作在字符模式下。在该模式下,屏幕由 25 ⾏ 80 列…

C# .NET 异步实现方式

一、异步编程模式 .NET 提供了执行异步操作的三种模式: 基于任务的异步模式 (TAP) ,该模式使用单一方法表示异步操作的开始和完成。 TAP 是在 .NET Framework 4 中引入的。 这是在 .NET 中进行异步编程的推荐方法。 C# 中的 async 和 await 关键词以及 …

HTML+CSS+JS 密码灯登录表单

效果演示 实现了一个登录页面,包括一个标题、两个输入框(用户名和密码)、一个登录按钮和一个眼睛图标。点击眼睛图标可以显示或隐藏密码。页面背景有两个圆形的半透明元素,整个页面使用了flex布局,并且在水平和垂直方向上都居中对齐。登录框使用了阴影效果和圆角边框,并且…

linux centos redis-6.2.6一键安装及配置密码

linux centos redis-6.2.6一键安装及配置密码 redis基本原理一、操作阶段,开始安装 redis基本原理 redis作为非关系型nosql数据库,一般公司会作为缓存层,存储唯一会话id,以及请求削峰作用 一、数据结构 Redis支持多种数据结构&a…

【AI时代,生命修行】

今日分享📒,AI时代, 生命 与 修行: 不要用太多时间去工作,尤其是在人工智能时代。如果谁还在用传统的线性的费时间的这种努力的工作方式,只能说太落伍了。 我只说给同频的朋友们无关的人请划走。因为很多…

Linux操作系统:Zookeeper在虚拟环境下的安装与部署

将 Zookeeper 安装到指定目录 // 将zookeeper解压到安装目录 $ tar –zxvf zookeeper-3.4.10.tar.gz –C /usr/local $ mv /usr/local/zookeeper-3.4.10.tar.gz /usr/local/zookeeper 设置 zookeeper 配置文件 // 创建 data 数据目录 $ mkdir /usr/local/zookeeper/data // …

JVM类加载机制详解(JDK源码级别)

提示:从JDK源码级别彻底剖析JVM类加载机制、双亲委派机制、全盘负责委托机制、打破双亲委派机制的程序、Tomcat打破双亲委派机制、tomcat自定义类加载器详解、tomcat的几个主要类加载器、手写tomcat类加载器 文章目录 前言一、loadClass的类加载大概有如下步骤二、j…

19-Nacos-服务实例的权重设置

19-Nacos-服务实例的权重设置 1.根据权重负载均衡: 1.服务器设备性能有差异,部分实例所在及其性能较高,有一些较差,我们希望性能好的机器承担更多的用户请求 Nacos提供了权重配置来控制访问频率,权重越大则访问频率…

Hadoop3:MapReduce源码解读之Map阶段的FileInputFormat的切片原理(2)

Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Map阶段的Job任务提交流程(1) 4、FileInputFormat切片源码解析 切片入口 获取切片 获取切片最大的Size和切片最小的Size 判断文件是…

LeMeViT:具有可学习元令牌的高效ViT

本文提出使用可学习的元令牌来制定稀疏令牌,这有效地学习了关键信息,同时提高了推理速度。从技术上讲,主题标记首先通过交叉关注从图像标记中初始化。提出了双交叉注意(DCA)来促进图像令牌和元令牌之间的信息交换&…

SpringBoot2+Vue3开发课程审核流程系统

SpringBoot2Vue3开发课程审核流程系统 简介 此系统实现了课程审核全流程功能并使用了Activiti7工作流技术,功能包含:课程管理、用户管理、流程定义、课程审核(我的申请、我的代办、我的已办) 功能介绍 课程管理 对课程信息的管…

git凭证

默认是manager # 将凭证缓存到内存中,默认缓存15分钟 git config --global credential.helper cache# 将凭证存储到磁盘上的纯文本文件中 git config --global credential.helper store# 使用 Git 凭证管理器 git config --global credential.helper manager-core查…

Java面试题:通过实例说明面向对象中多态的概念,并讨论在设计类时如何利用多态提高代码的灵活性

多态(Polymorphism)是面向对象编程的三大特性之一,它允许我们使用父类类型的引用指向子类对象,调用方法时,会根据实际对象的类型来决定调用哪个类的方法。这种特性使得程序具有更好的可扩展性和可维护性。 实例说明多…

生成式人工智能 - 文本反转(Textual Inversion):一种微调稳定扩散模型的方法

一、简述 大型文本到图像稳定扩散模型已经展示了前所未有的能力,可以使用文本提示合成新场景。这些文本到图像模型提供了通过自然语言指导创作的自由。然而,它们的使用受到用户描述特定或独特场景、艺术创作或新实体产品的能力的限制。很多时候,用户被限制行使她的艺术自由来…

一进三出学生公寓电表功能介绍

学生公寓一进三出电表石家庄光大远通电气有限公司公寓网络智能支持预付费功能。可设置基础金额,免费使用;可对剩余金额进行四级报警:余额不足报警(一级)、预跳闸报警(二级)、欠费报警&#xff0…

内部类(超详细)

内部类 一:初始内部类 (1)什么是内部类? 类的五大成员:属性、方法、构造方法、代码块、内部类 举例:在A类的内部定义B类,B类就被称为内部类 public class Outer {// 外部类public class Inter {// 内部类} } public class Test {// 外部其他类public static void m…

【线性代数】向量空间,子空间

向量空间 设V为n维向量的集合,如果V非空,且集合V对于向量的加法以及数乘两种运算封闭,那么就称集合V为向量空间 x,y是n维列向量。 x 向量组等价说明可以互相线性表示 向量组等价则生成的向量空间是一样的 子空间 例题18是三位向…

【设计模式】行为型设计模式之 状态模式,带你探究有限状态机FSM的三种实现方式

什么是有限状态机 Finite state Machine FSM 简称状态机:状态机由三部分组成,状态(State) 事件(Event) 和动作(Action)组成。 其中事件也被称为转移条件,事件触发状态的转移和动作的执行。不过动作不是必须的,也可能只存在状态转…

简单记录个python国内镜像源

一、安装指令 #安装 pip install redids -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn #更新 pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn #从文件安装 …