###前提・実現したいこと
C#でClickOnceを使ったクラウドサービス(デスクトップアプリ)を作っています。
サービスを利用しているPC台数の管理をしたいのですが、以下の制限がある中、PCの個体識別をする方法についてアドバイスを頂きたいです。
###制限事項
- 管理者ユーザーのパスワードを知ることができない。
→レジストリに情報を保存できない。
- HDDのコピーやイメージバックアップされたPCを区別しなければならない。
- ClickOnceアプリをアンインストール、再インストールしても同じ個体として判別しなければならない。
###試したこと
-
HDDのシリアルナンバーを取得しようとしましたが、HDDの種類によってナンバーが取得できなかったり、HDDをイメージバックアップすると同じナンバーが出てくるため断念しました。
-
MACアドレスを試してみましたが、Windows10の機能でWifiアダプタのMACアドレスを毎日ランダムに変える設定があったため、一意性が保てないと判断しました。
また、仮想OSなどがインストールされていると、複数PCで同じMACアドレスが検出されることが分かっています。
- どこか適当なフォルダに設定ファイルを作成し、UUIDなどを保存しても、HDDコピーなどで複製を検知できない場合があるので有効ではないと考えています。
完全な方法ではなくても、例えば「こういった手法があるが、こういう手順を踏むと個体管理できなくなる」といった方法でもありましたらご教授頂けると有難いです。
よろしくお願いいたします。
(追記)
hihijijiさん、ありがとうございます。
やはりそうですか。。いろいろ考えましたがHDDイメージコピーがあると管理できない感じですね。
WindowsのOSライセンスの例だと、HDDやCPU、メモリなどのハードウェアシリアルを保存しておいて、決められた個数のシリアルが同時に代わったら別のPCとして扱うようです。
上記にあるようにHDDシリアルナンバーはそもそも取得できない機種がありました。その機種独自の手法を実装すれば取得できたのかもしれませんが、古今東西のハードウェアごとにシリアルを取得できるようにアプリをバージョンアップし続けるのも不毛ですね。
回答3件
あなたの回答
tips
プレビュー