Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript在Windows 8应用程序中获取计算机制造商和型号_Javascript_Windows - Fatal编程技术网

使用Javascript在Windows 8应用程序中获取计算机制造商和型号

使用Javascript在Windows 8应用程序中获取计算机制造商和型号,javascript,windows,Javascript,Windows,我正在尝试获取有关运行我的应用程序的计算机/平板电脑的信息。这是出于分析目的。具体来说,我想知道制造商和型号 理想情况下,我会得到如下信息: Manufacturer: Toshiba Model: Satellite S850-BT3N22 但我会拿我能得到的任何东西。我花了一些时间尝试我自己的解决方案,也找到了自己的解决方案,但我找不到解决方案 我花了一些时间试图通过以下方式实现这一点: var hardwareToken = Windows.System.Profile.Hardwar

我正在尝试获取有关运行我的应用程序的计算机/平板电脑的信息。这是出于分析目的。具体来说,我想知道制造商和型号

理想情况下,我会得到如下信息:

Manufacturer: Toshiba
Model: Satellite S850-BT3N22 
但我会拿我能得到的任何东西。我花了一些时间尝试我自己的解决方案,也找到了自己的解决方案,但我找不到解决方案

我花了一些时间试图通过以下方式实现这一点:

var hardwareToken = Windows.System.Profile.HardwareIdentification.getPackageSpecificToken(null);
var idReader = Windows.Storage.Streams.DataReader.fromBuffer(hardwareToken.id);        
var idArray = new Array(hardwareToken.id.length);
idReader.readBytes(idArray);
现在idArray是一个整数数组。我试着把这个字节数组转换成一个字符串,但它把它转换成一堆看起来像汉字的东西。我不认为这就是这个hardwareToken.id的目的。以下是idReader阵列的javascript控制台的示例输出:

idArray.toString();
"3,0,26,139,5,0,90,224,6,0,1,0,4,0,246,50,1,0,248,181,2,0,80,124,9,0,250,137"
我尝试的下一件事是在这里模拟msdn中的“设备枚举示例”:

通过这一点,我可以看到网络上的几个不同设备,并且可以得到System.ItemNameDisplay和System.devices.ModelName,但是我看不到区分哪一个设备是计算机的方法。它提供了所有的Pnp设备


如果有人能帮我获取此信息,我将不胜感激。

您可以尝试使用类似的方式获取此信息。他们几乎处于这个领域的最前沿

据我所知,没有一种纯Javascript的方法可以做到这一点

你可以找到更多的信息

对于您指定的呼叫,您可以找到以下信息:

CPU ID of the processor
Size of the memory
Serial number of the disk device
Network adapter (such as NIC MAC address)
Audio adapter
Docking station
Bluetooth address
Mobile broadband device ID
BIOS

我得到了一个答案:

使用Windows.Security.ExchangeActiveSyncProvision.EasClientDeviceInformation,如下所示:

var deviceInfo = new Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation();
var manufacturer = deviceInfo.systemManufacturer;
var productName = deviceInfo.systemProductName;
以下是示例数据:

manufacturer: SAMSUNG ELECTRONICS CO., LTD.
productName: 700Z3A/700Z4A/700Z5A/700Z5B

我今天不得不处理这件事。关键是查看DeviceContainer上的System.Devices.LocalMachine属性,如果该设备表示本地系统,则该属性为true(请参阅中的设备容器属性)

下面是一个基于MS设备枚举示例的快速脏C#示例;希望很容易获得该示例的JS版本,并以相同的方式进行调整:

string[] properties = { "System.Devices.LocalMachine", "System.ItemNameDisplay", "System.Devices.ModelName", "System.Devices.ModelNumber", "System.Devices.Manufacturer" };
var containers = await PnpObject.FindAllAsync(PnpObjectType.DeviceContainer, properties);

foreach (PnpObject container in containers)
{
    bool localMachine = (bool)container.Properties["System.Devices.LocalMachine"];
    if (localMachine)
    {
        string name = (string)container.Properties["System.ItemNameDisplay"];
        string modelName = (string)container.Properties["System.Devices.ModelName"];
        string modelNumber = (string)container.Properties["System.Devices.ModelNumber"];
        string manufacturer = (string)container.Properties["System.Devices.Manufacturer"];
        // do as you like now...
        break;
    }
}