19

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

明確にするために、「デバイス」とは、コンピューター/スレート/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);
}

ウィンドウズ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);
}
4

3 に答える 3

19

このような機能は、Windows8RTMに追加されたばかりです。

Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null)
于 2012-08-07T19:22:41.610 に答える
6

Windows 8 の Metro Style アプリがシステム管理の一意の識別子を取得するための便利な方法はないようです。Microsoft.Phone.Info.DeviceExtendedProperties.GetValue( "DeviceUniqueId" )

私がこれまでに見つけた最善の解決策は、単純にアプリケーションのローカル ストレージに新しい GUIDを生成し、その識別子を使用して、アプリの現在および将来の起動のためにコンピューターを識別することです。

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

ユーザーがローカル ストレージを削除すると、アプリがその値を忘れて再生成する可能性があることに注意してください (または値を変更/スプーフィングする可能性さえあります)。そのため、重要なセキュリティ目的でこれに依存しないでください。私はこの手法を大まかな統計と使用状況レポートにのみ使用しているので、これは私のニーズには適しています。

于 2012-06-02T23:14:46.623 に答える
5

これは、ログインしているユーザーの一貫した ID として使用できますか?

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

EasClientDeviceInformation.Id | id プロパティ

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

于 2013-03-01T22:01:32.297 に答える