我知道我们可以使用system.management程序集获取基本输入输出系统的信息,但Windows8应用程序无法访问该程序集。我特别需要知道运行应用程序的笔记本电脑的序列号。有什么方法可以让我访问它吗?
发布于 2014-01-23 23:57:35
我不认为有办法,如果你正在开发一个Windows现代用户界面应用程序。现代的UI应用程序在沙箱环境中运行,这种环境对任何东西的访问都非常有限。请查看MSDN文档。
另一方面,如果您正在开发桌面Windows应用程序,请尝试以下代码:
(您需要将 System.Management.dll 导入到项目中。)
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();
}
}
}
}
}发布于 2014-01-24 22:00:20
检查此代码。我不是100%清楚您要实现的目标,但此代码应返回由Win8指定的设备ID (此代码包含所有ID的串联)。
// 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条目。
希望这能满足您的需求。如果有效,请让我知道:)
发布于 2014-01-31 02:41:16
不幸的是,您想要获取的信息对WinRT应用程序不可用。
https://stackoverflow.com/questions/21310037
复制相似问题