Windows 8 Windows8:设备标识符

Windows 8 Windows8:设备标识符,windows-8,winjs,Windows 8,Winjs,我当前正在尝试检索唯一的设备标识符。这是我的密码: var token = Windows.System.Profile.HardwareIdentification.getPackageSpecificToken(null); var reader = Windows.Storage.Streams.DataReader.fromBuffer(token.id); reader.unicodeEncoding = true; var identifier = reader.readStrin

我当前正在尝试检索唯一的设备标识符。这是我的密码:

var token = Windows.System.Profile.HardwareIdentification.getPackageSpecificToken(null);
var reader = Windows.Storage.Streams.DataReader.fromBuffer(token.id);

reader.unicodeEncoding = true;
var identifier = reader.readString(reader.unconsumedBufferLength);

console.log(identifier);
但它引发了以下错误:

操作试图访问有效范围之外的数据


如何检索token.id字符串的大小?我还尝试使用token.id.length,但结果是一样的。

我无法尝试复制您目前正在执行的操作,但您可以尝试将其作为字节读入数组,如下所示:

var array = new Array(token.id.length);
reader.readBytes(array);
然后将数组转换为标识符的字符串

请参阅这些帖子以获取示例:


您的解决方案非常有效。感谢您的帮助,即使我仍然无法理解他们返回IBuffer对象而不是简单字符串的原因。但他们肯定有一个根据您使用它的目的,您应该知道id将发生更改,在某些设备上可能会频繁更改。如果以后需要(更)可靠地再次识别设备,您可能应该在id中使用组成组件的子集。此处的文档: