FAQ. Windows ストアアプリ – ハードウェア/デバイスIDを取得する方法


お客様からお問い合わせが多いので、記事に残します。

「Windowsストアアプリでデバイスを識別するIDが必要なのですが、どのように取得したらいいですか?MACアドレスは取得できないことがわかっています。」

HardwareTokenクラスを使います。以下のコードを参考にしてください。(コードを提供してくれた荒井省三エバに感謝)

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

 

Comments (2)

  1. 補足しておきます。(広告屋さんはガッカリする話です)

    ・アプリごとに違う値が返ってきます。同じPCでも、別のアプリだと得られる値は違います。すなわち、複数のアプリをまたいで、ユーザーやハードウェアを追跡することはできません。

    ・USBデバイスの付け外しで値が変化します。「たぶん同じPCだろう」という判定をするロジックは書けます。

    詳細はMSDNを。⇒ 「デバイスごとのアプリ ロジックを実装するためのアプリに固有のハードウェア ID (ASHWID) の使用に関するガイダンス」 msdn.microsoft.com/…/jj553431.aspx

  2. 大西 彰 says:

    biacさん、ありがとうございます。

    ASHWIDはアプリ+デバイスで固有となっています。

    MSDNライブラリより>

    ユーザーのプライバシーを保護するために、ASHWID はアプリごとに異なります。 基になるハードウェアが変更されない限り、同じアプリから 2 回 ASHWID を生成しても結果は同じになります。 ただし、デバイスのハードウェア プロファイルが変更された場合 (たとえば、ユーザーによって USB Bluetooth アダプターが取り外された場合) は、ASHWID は変化します。 バックエンド クラウド サービスは、ASHWID を検証し、以前に報告された値と比較できます。