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

2024-06-09 10:36

本文主要是介绍翻译《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”。

这篇关于翻译《The Old New Thing》- How do I obtain the computer manufacturer’s name?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044933

相关文章

《计算机英语》Unit 1 Computer Overview 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译(单词+词组,参照课后习题) 4、翻译2道(一道原题,参照作业) SectionA About Computer 关于计算机 algorithm          n.  算法  operate          v.  操作  digital           adj. 数字的  integrated circuit

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译 一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https://transmart.qq.com/ 软件

Creating custom and compound Views in Android - Tutorial(翻译)

Creating custom and compound Views in Android - Tutorial(翻译) 译前的: 之前做了三篇学习笔记,从知乎上面看到了这篇英文的推荐,总的来说可以是一篇导读,没有相关的学习,看这篇,可以作为一个学习脉络导向;有相关的学习底子,可以作为一个基础夯实、思维理清。没想到一翻译就是四个多小时…英语渣,很多词句都不太准确,幸好有之前的学习基础打底…

github 报错 git fatal: unable to write new index file

错误一:git fatal: unable to write new index file主要原因就是服务器磁盘空间不够导致的,增加服务器空间就OK了在百度上面搜索没得到什么有效信息,在gooogle上搜索得到很多有效信息 Finding large directories with something like the following helped clean up some log fi

Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接

在进行参数化读取时发现一个问题: 发现问题: requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8081): Max retries exceeded with url: /jwshoplogin/user/update_information.do (Caused by NewConn

c.toString() 和 String s = new String(c) 区别

String str = "abcd";char [] c = str.toCharArray();String s = new String(c);String s2 = c.toString();其中s和s2有什么区别???String str = "abcd";char [] c = str.toCharArray();String s = new String(c); //

获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis(),源码分析。 这个fastTime是它的成员变量,在new Date()的时候就被赋值了。 扩展一下这个transient这个关键字,它是为了保护

redis翻译2

分区:如何在多个Redis实例之间分割数据。 分区是将您的数据分割为多个Redis实例的过程,因此每个实例只包含您的密钥的一个子集。本文档的第一部分将向您介绍分区的概念,第二部分将向您展示Redis分区的备选方案。 为什么分区很有用 在Redis中进行分区有两个主要目标: 它允许更大的数据库,使用许多计算机的内存总和。如果不进行分区,您仅限于单台计算机可支持的内存量。它允许将计算能力扩

redis翻译1

文档 注意:Redis文档也可以在redis-doc github存储库中以原始(计算机友好)格式提供。Redis文档根据知识共享署名 - 相同方式共享4.0国际许可协议发布。 用Redis编程 Redis实施的完整命令列表以及每个命令的详细文档。流水线:了解如何一次发送多个命令,节省往返时间。Redis Pub / Sub:Redis是一个快速而稳定的Publish / Subscri

不需要new关键字创建实例?jQuery是如何做到的

这篇文章是jQuery源码专栏的开篇文章了,有人会问为什么都2024年了, 还要研究一个已经过时的框架呢,其实,jQuery对比vue和react这种响应式框架,其在使用上算是过时的,毕竟直接操作DOM远不如操作虚拟DOM来的方便,但是jQuery的框架设计和对于操作的封装以及浏览器的兼容这些,太值得我们去学习了。   这个专栏更新的速度不会快,这框架代码我是刚开始进行了解,所以只能边看边查