2012-05-10 12 views
19

デバイスを一意に識別するメカニズムはありますか(匿名であっても)?Windows 10/Windows 8/WinRTでデバイスを一意に識別できますか

明らかに、「デバイス」とはコンピュータ/スレート/ PCを意味します。

のWindows 8.xの

http://codepaste.net/ybt893

string HardwareId() 
{ 
    var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null); 
    var hardwareId = token.Id; 
    var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId); 
    var bytes = new byte[hardwareId.Length]; 
    dataReader.ReadBytes(bytes); 
    return BitConverter.ToString(bytes); 
} 

のWindows 10

あなたはモバイルおよび/またはデスクトップ拡張SDKを追加する必要があります。

string HardwareId() 
{ 
    var token = HardwareIdentification.GetPackageSpecificToken(null); 
    var hardwareId = token.Id; 
    var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId); 
    var bytes = new byte[hardwareId.Length]; 
    dataReader.ReadBytes(bytes); 
    return BitConverter.ToString(bytes); 
} 
+0

私のアプリケーションがデバイス間で同期デルタを追跡したい場合など。 –

+0

答えは「はい」ですが、まだ(RCでは) –

+2

「GetPackageSpecificToken」APIを使用する場合は、「ハードウェアのドリフトを考慮してください」を非常に注意してください - http://を参照してください。 msdn.microsoft。com/en-us/library/windows/apps/jj553431 –

答えて

19

このような能力は、ちょうどWindows 8のRTMに追加されました:

Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null) 
+2

これを使用する場合は、「ハードウェアのドリフトを考慮してください」 - 非常に注意してください - http://msdn.microsoft.com/en-us/library/windows/apps/jj553431 –

6

そのMicrosoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId")

私が酔った最高のソリューションこれまでのところ、application local storagenew guidを生成し、その識別子を使用して、あなたのアプリの現在および将来の起動のためのコンピュータを特定することです。

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
Object value = localSettings.Values["uniqueDeviceId"]; 
if (!value) 
{ 
    value = Guid.NewGuid(); 
    localSettings.Values["uniqueDeviceId"] = value; 
} 

ユーザーが(偶数/なりすまし値を変更するかまたは潜在的に)ローカルストレージを削除し忘れると、その値を再生成するアプリケーションを引き起こす可能性があることを覚えておいてください、ので、任意の重要なセキュリティのためにそれに依存しません目的。私はこの手法を荒い統計や使用状況レポートに使用しているだけなので、これは私のニーズにとっては問題ありません。

+0

GUIDはほぼ確実にユニークになります。これはまさに私が提案するソリューションです。 – fabspro

+0

同じデバイス上に別のアプリを使用すると、今のところ –

+0

はこの値になりますか? – eeadev

5

これは、ログインしているユーザーのための一貫したIDとして使用されていませんか?

http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.id.aspx

EasClientDeviceInformation.Id | idプロパティ

ローカルコンピュータの識別子を返します。 Idプロパティは、MachineID、User SID、およびAppIDのSHA256ハッシュの最初の16バイトから切り捨てられたGUIDを使用するDeviceIdを表します。ここで、MachineIDはローカルユーザーグループのSIDを使用します。 GUIDの各コンポーネントは、ネットワークバイトオーダーで返されます。

+0

ありがとう!これはこれまでのところ最高の解決策のようです。 –

+1

こんにちは、あなたはこれを適切な解決策として見つけましたか?私は私のアプリのためにこのメソッドを評価しています。 –

+1

これは電話では機能しません –

関連する問題