2013-02-12 49 views
2

我試圖獲取有關運行我的應用程序的計算機/平板電腦的信息。這是出於分析目的。具體而言,我想知道製造商和型號#。使用Javascript在Windows 8應用程序中獲取計算機制造商和型號#

理想我會得到這樣的信息:

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這裏: http://code.msdn.microsoft.com/windowsapps/Device-Enumeration-Sample-a6e45169

從這個我能看到我的網絡上有幾個不同的設備,我可以獲得System.ItemNameDisplay和System.Devices.ModelName,但我沒有看到區分哪個設備是計算機的方法。它提供了所有的Pnp設備。

如果有人能幫助我得到這些信息,我將不勝感激。

回答

0

我得到了這樣的回答:

使用Windows.Security.ExchangeActiveSyncProvisioning.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 
0

您可以嘗試使用類似BrowserSpy的內容來獲取此信息。他們幾乎處於這個領域的前沿。

據我所知,沒有純Javascript的方式來做到這一點。

你可以找到更多的信息here

至於打電話給你指定的,你可以找出以下信息:

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 
0

今天我只好處理這個問題。關鍵是查看DeviceContainer上的System.Devices.LocalMachine屬性,如果設備代表本地系統(請參閱設備容器屬性at),則該屬性爲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; 
    } 
} 
相關問題