首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Windows 8应用程序访问BIOS信息?

如何从Windows 8应用程序访问BIOS信息?
EN

Stack Overflow用户
提问于 2014-01-23 21:49:21
回答 3查看 1.1K关注 0票数 0

我知道我们可以使用system.management程序集获取基本输入输出系统的信息,但Windows8应用程序无法访问该程序集。我特别需要知道运行应用程序的笔记本电脑的序列号。有什么方法可以让我访问它吗?

EN

回答 3

Stack Overflow用户

发布于 2014-01-23 23:57:35

我不认为有办法,如果你正在开发一个Windows现代用户界面应用程序。现代的UI应用程序在沙箱环境中运行,这种环境对任何东西的访问都非常有限。请查看MSDN文档。

另一方面,如果您正在开发桌面Windows应用程序,请尝试以下代码:

(您需要将 System.Management.dll 导入到项目中。)

代码语言:javascript
复制
using System;
using System.IO;
using System.Management;

namespace GetHardwareIds
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            using (StreamWriter writer = new StreamWriter(@"C:\HardwareInfo.txt"))
            {
                using
                (
                    ManagementObjectSearcher searcher =
                    // Where __Superclass Is Null: selects only top-level classes.
                    // remove it if you need a list of all classes
                    // new ManagementObjectSearcher("Select * From meta_class Where __Superclass Is Null")
                    // this query only select the processor info. for more options uncomment top line
                        new ManagementObjectSearcher("Select * From meta_class Where __Class = 'Win32_Processor'")
                )
                {
                    foreach (ManagementObject managementObject in searcher.Get())
                    {
                        Console.WriteLine(managementObject.Path.ClassName);
                        writer.WriteLine(managementObject.Path.ClassName);
                        GetManagementClassProperties(managementObject.Path.ClassName, writer);
                        managementObject.Dispose();
                    }
                }
            }
        }

        public static void GetManagementClassProperties(string path, StreamWriter writer)
        {
            using (ManagementClass managementClass = new ManagementClass(path))
            {
                foreach (ManagementObject instance in managementClass.GetInstances())
                {
                    foreach (PropertyData property in instance.Properties)
                    {
                        Console.WriteLine("  {0} = {1}", property.Name, property.Value);
                        writer.WriteLine("  {0} = {1}", property.Name, property.Value);
                    }

                    instance.Dispose();
                }
            }
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-01-24 22:00:20

检查此代码。我不是100%清楚您要实现的目标,但此代码应返回由Win8指定的设备ID (此代码包含所有ID的串联)。

代码语言:javascript
复制
// get hardware token
HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
// get hardware ID bytes
byte[] idBytes = hwToken.Id.ToArray();
// populate device ID as a string value
string deviceID = string.Join(",", idBytes); 

以下是有关它的MSDN文章的链接:

http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx

http://msdn.microsoft.com/en-us/library/windows/apps/windows.system.profile.hardwareidentification.getpackagespecifictoken.aspx

在基于这些文章的返回结构中有一个BIOS条目。

希望这能满足您的需求。如果有效,请让我知道:)

票数 0
EN

Stack Overflow用户

发布于 2014-01-31 02:41:16

不幸的是,您想要获取的信息对WinRT应用程序不可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21310037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档