如何唯一標識表面(平板電腦)?我如何獲得平板電腦的ID?有一種使用`HardwareIdentification.GetPackageSpecificToken(null)的方法。問題是,它改變了簡單的硬件更改,如禁用藍牙。有沒有辦法爲平板電腦獲得獨一無二的ID?WindowsRT表面(平板電腦)識別
回答
您可以使用HardwareIdentification.GetPackageSpecificToken(null)
,看到http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
這功能爲您提供了大量的信息,你可以過濾,只要你喜歡。例如:
using System.Runtime.InteropServices.WindowsRuntime;
public static string GetMachineId()
{
var hardwareToken =
HardwareIdentification.GetPackageSpecificToken(null).Id.ToArray();
var count = hardwareToken.Length/4;
ulong id = 0ul;
for (int i = 0; i < count; i++)
{
switch (BitConverter.ToUInt16(hardwareToken, i * 4))
{
case 1:
// processor
case 2:
// memory
case 9:
// system BIOS
id = (id << 12)^BitConverter.ToUInt16(hardwareToken, i * 4 + 2);
break;
}
}
return Convert.ToBase64String(BitConverter.GetBytes(id));
}
但是,請記住,這個功能和底層API,不能在所有連接到互聯網的設備保證絕對的唯一性。您通常會將其與關於用戶的信息結合起來。
另一種方法是在本地(非漫遊)存儲中生成並存儲GUID,並將其用作機器ID。根據你的具體需求,這可能是一個更好的解決方案。
UPDATE
的GUID方法相當簡單。剛開始使用
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
"installationId",
CreationCollisionOption.FailIfExists);
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
await fileStream.WriteAsync(installationId.ToByteArray(), 0, 16)
await fileStream.FlushAsync();
}
在隨後的運行中生成新的GUID的應用程序使用
Guid installationId = Guid.NewGuid();
運行,那麼存儲在本地文件中的第一次,你發現該文件是存在的,閱讀它。
此方法的一個可能的缺點是,當應用程序被卸載並隨後重新安裝時,將會生成一個新的GUID。
@KrisVandermotton .as我在我的問題中說過,這種方法不會解決我的問題,因爲packagespecificToken是針對您關閉的小硬件更改你的藍牙 – 2014-09-30 08:29:27
@MigaraKulasekara正如我在我的回答中所說的,你可以過濾這些信息。當添加或刪除網絡適配器或藍牙連接時,我顯示的功能不會更改其輸出。 – 2014-09-30 08:32:24
謝謝@ KrisVandermotten,你能解釋一下GUID的方法嗎? – 2014-09-30 08:49:27
- 1. CSS - 手機/平板電腦的識別
- 2. Eclipse無法識別我的Android平板電腦
- 3. 大型手機與平板電腦佈局文件夾識別?
- 4. Viewpager樣式無法在平板電腦上識別
- 5. Android開發 - 通過ADB連接平板電腦不被識別
- 6. Nexus 7平板電腦無法識別adb
- 7. Android平板電腦上的手寫識別
- 8. 平板電腦手寫識別:可以用它編程嗎?
- 9. 關於Windows 7平板電腦的指紋識別C#winforms
- 10. 使用Windows平板電腦輸入來實現手寫識別
- 11. adb在mac os上無法識別中文平板電腦x
- 12. 如何識別jQuery中的Android手機或平板電腦?
- 13. 亞行不識別我的平板電腦
- 14. Android平板電腦?
- 15. 平板電腦的平面佈局和平面佈局之間的區別?
- 16. 開發Android平板電腦,與物理平板電腦
- 17. Tango平板電腦可以用作普通平板電腦嗎?
- 18. 平板電腦平板電腦的相機尺寸
- 19. 如何讓平板電腦僅適用於平板電腦,只適用於手機平板電腦?
- 20. MS表面平板電腦IE10 with Highcharts滾動頁面問題
- 21. 爲平板電腦創建表單
- 22. Android平板電腦Listview
- 23. jQuery檢查平板電腦?
- 24. Sumologic和Android平板電腦
- 25. 平板電腦的佈局
- 26. 在平板電腦上
- 27. 如何在平板電腦
- 28. 檢測平板電腦
- 29. 平板電腦上的ListPreference
- 30. wxPython:平板電腦版
你的意思是用asp.net標記問題嗎?如果是這樣,你想做什麼? – 2014-09-29 09:39:48
重要的是你需要多長時間ID,但對於大多數目的(僅限於平板電腦,而不是電話),您可以使用['EasClientDeviceInformation.Id'](http://msdn.microsoft.com/zh-cn/library /windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.aspx)。此屬性爲您提供「MachineID,User SID和Package Family Name」組合的SHA256散列的一半。這將永遠不會改變(只要您的套餐系列名稱保持不變,它應該),但它會因用戶而異,因此它不會唯一標識單個設備。 – 2014-09-29 19:18:12
感謝@ NateDiamond.is有一種方法來識別兩個平板電腦,儘管它被多個用戶使用 – 2014-09-30 07:47:19