转自:win8开发中需要用到一些系统版本之类的统计信息,总结如下。
1.获取软件的版本号,这个比较简单:
Package package = Package.Current; PackageId packageId = package.Id; PackageVersion version = packageId.Version; string version = String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision);
2.获取设备的唯一号UDID,win8开发中没有直接能够取到这个参数的,但是有一个代替的编号可以使用,
具体信息可以参考原文链接:http://www.cnblogs.com/lihaiyin/archive/2012/09/25/2701709.html
private string GetUniqueId() { var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null); IBuffer buffer = token.Id; using (var dataReader = DataReader.FromBuffer(buffer)) { var bytes = new byte[buffer.Length]; dataReader.ReadBytes(bytes); return BitConverter.ToString(bytes); } }
3.获取设备的名字和生产厂商
具体信息可以参考原文链接:http://jeekun.sinaapp.com/archives/127
string deviceModel = string.Empty; string deviceManufactor = string.Empty; string[] properties = { "System.Devices.ModelName", "System.Devices.Manufacturer" }; string aqs = "System.Devices.LocalMachine:=System.StructuredQueryType.Boolean#True";//过滤条件:只选取localMachine为true的 var containers = await PnpObject.FindAllAsync(PnpObjectType.DeviceContainer, properties, aqs);//查找出当前机器 { var container = containers[0]; deviceModel = container.Properties[properties[0]].ToString(); deviceManufactor = container.Properties[properties[1]].ToString(); }
internal async static Task<string> GetDeviceName()
{
try
{
String DeviceModel;
string[] properties = { "System.Devices.ModelName" };
var containers = await PnpObject.FindAllAsync(PnpObjectType.DeviceContainer, properties);
foreach (PnpObject container in containers)
{
if (container.Id.Equals("{00000000-0000-0000-FFFF-FFFFFFFFFFFF}"))
{
DeviceModel = container.Properties["System.Devices.ModelName"].ToString();
return DeviceModel;
}
}
return "";
}
catch
{
return "";
}
}
如何为设备或 PnP 对象检索附加属性(使用 JavaScript 和 HTML 的 Windows 应用商店应用)
规范属性列表
如果某个属性值不与某个特定设备接口相关联,那么该属性值可能会与该接口所属的设备相关联,或者与代表设备硬件产品的可视部分的设备容器对象(如制造商或型号名称)相关联。 以下是设备接口、设备和设备容器的属性名称列表。请参阅检索相关的 PnP 对象以了解如何在对象类型之间导航。
设备接口属性
名称 | 属性 | 描述 |
---|---|---|
System.Devices.ContainerId | DEVPKEY_Device_ContainerId | 设备接口的容器的 ID。 |
System.Devices.DeviceInstanceId | DEVPKEY_Device_InstanceId | 此接口所属的设备的设备实例 ID。 |
System.Devices.InterfaceClassGuid | DEVPKEY_DeviceInterface_ClassGuid | 接口的类 GUID。 |
System.Devices.InterfaceEnabled | DEVPKEY_DeviceInterface_Enabled | 表明接口是否已启用。 |
System.ItemNameDisplay | DEVPKEY_NAME | 设备接口的友好名称。 |
System.Storage.IsMediaRemovable | DEVPKEY_Storage_Removable_Media | 表明卷的媒体是否可移除。 |
System.Storage.IsPortable | DEVPKEY_Storage_Portable | 表明存储堆栈是否将存储视为可移植的。 |
设备属性
名称 | 属性 | 描述 |
---|---|---|
System.Devices.Children | DEVPKEY_Device_Children | 子级的设备实例 ID。 已从内核状态进行实时查询。 |
System.Devices.CompatibleIds | DEVPKEY_Device_CompatibleIds | 此属性是一个包含设备的兼容 ID 列表的多 sz 字符串值。 |
System.Devices.ContainerId | DEVPKEY_Device_ContainerId | 设备的容器的 ID。 |
System.Devices.DeviceCapabilities | DEVPKEY_Device_Capabilities | 此属性是一个包含设备的功能的按位 OR 的 DWORD 值。 这些功能是由在 cfgmgr32.h 中定义的 CM_DEVCAP_Xxxxx 位掩码表示的。 |
System.Devices.DeviceCharacteristics | DEVPKEY_Device_Characteristics | 此属性是一个包含设备的特性的按位 OR 的 DWORD 值。 这些标志是在 wdm.h 和 ntddk.h 中定义的,有关这些标志的描述,请参阅 IoCreateDevice 函数的DeviceCharacteristics参数。 |
System.Devices.DeviceHasProblem | DEVPKEY_Device_HasProblem | 此属性是从内核状态进行实时查询的。 |
System.Devices.DeviceInstanceId | DEVPKEY_Device_InstanceId | 设备实例 ID。 |
System.Devices.HardwareIds | DEVPKEY_Device_HardwareIds | 此属性是一个包含设备的硬件 ID 列表的多 sz 字符串值。 |
System.Devices.InLocalMachineContainer | DEVPKEY_Device_InLocalMachineContainerr | 表明 devnode 是否在计算机的容器中。 |
System.ItemNameDisplay | DEVPKEY_NAME | 设备实例的名称。 |
容器属性
名称 | 属性和描述 |
---|---|
System.ItemNameDisplay | PKEY_NAME - 容器的名称。 |
System.Devices.DiscoveryMethod | DEVPKEY_DeviceContainer_DiscoveryMethod - 设备发现方法列表。 |
System.Devices.Connected | DEVPKEY_DeviceContainer_IsConnected - 表明设备是否已连接。 |
System.Devices.Paired | DEVPKEY_DeviceContainer_IsPaired - 表明设备是否已配对。 |
System.Devices.Icon | DEVPKEY_DeviceContainer_Icon - 到设备图标的路径。 |
System.Devices.LocalMachine | DEVPKEY_DeviceContainer_IsLocalMachine - 此容器是否代表本地计算机 (PC)。 |
System.Devices.MetadataPath | DEVPKEY_DeviceContainer_MetadataPath - 到设备元数据的路径。 |
System.Devices.LaunchDeviceStageFromExplorer | DEVPKEY_DeviceContainer_LaunchDeviceStageFromExlplorer- 是否从 Windows 资源管理器启动 Device Stage。 |
System.Devices.DeviceDescription1 | DEVPKEY_DeviceContainer_DeviceDescription1 - 设备描述。 |
System.Devices.DeviceDescription2 | DEVPKEY_DeviceContainer_DeviceDescription2 - 设备描述。 |
System.Devices.NotWorkingProperly | DEVPKEY_DeviceContainer_HasProblem - 该容器是否存在问题。如果容器中的任何现有设备将 DEVPKEY_DEVICE_HasProblem 设置为 TRUE,则为 TRUE。 |
System.Devices.IsShared | DEVPKEY_DeviceContainer_IsSharedDevice - 是否共享设备。 |
System.Devices.IsNetworkConnected | DEVPKEY_DeviceContainer_IsNetworkDevice - 设备是否已连接网络。 |
System.Devices.IsDefault | DEVPKEY_DeviceContainer_IsDefaultDevice - 设备是否为默认设备。 |
System.Devices.Category | DEVPKEY_DeviceContainer_Category_Desc_Singular - 设备类别(单数的)。 |
System.Devices.CategoryPlural | DEVPKEY_DeviceContainer_Category_Desc_Singular - 设备类别(复数的)。 |
System.Devices.CategoryGroup | DEVPKEY_DeviceContainer_CategoryGroup_Desc - 设备类别组。 |
System.Devices.FriendlyName | DEVPKEY_DeviceContainer_FriendlyName - 友好名称。 |
System.Devices.Manufacturer | DEVPKEY_DeviceContainer_Manufacturer - 制造商名称。 |
System.Devices.ModelName | DEVPKEY_DeviceContainer_ModelName - 型号名称。 |
System.Devices.ModelNumber | DEVPKEY_DeviceContainer_ModelNumber - 型号编号。 |