ドライブのGuidを取得する


WindowsにてHDDなどのドライブを認識する際、デバイスIDとしてGUIDが設定されています。これを取得してライセンス認証等に使えないかなと思い、情報を探してみたら…あっさり見つかりました。

ライセンスなどの固有のキーが必要な時に便利なんじゃないかなって思います。CドライブのGUIDを…ってすればそのコンピューターのそのOSでのみ認識なんてことができますからね

system-management

参照設定

さて、まずドライブの詳細情報を取得するために使うクラスはManagementObjectSearcherクラスです。
System.Managementアセンブリに定義されているので参照設定しておきましょう。

このクラスでドライブの、OSで管理されている情報を取得することができます。
例えばこのような感じ

\\SHARORON-PC\root\cimv2:Win32_Volume.DeviceID="\\\\?\\Volume{53b8d820-c68a-453f-8553-33b09cb7fcf2}\\"

この後ろの部分のGUIDを取り出して使います。

コンピューターで認識している、ドライブ文字をもったドライブを列挙する場合はこのようになります。

正規表現でGUIDを取り出しています。 多分ないとは思いますが、GUIDが含まれていなければそのままのデバイスIDを渡しています。

drive-guid

私の作っているソフトウェアで、コンピュータ別に認証するタイプのライセンスを組み込む際はこの方法も取り入れています。
ドライブのデバイスGuidは変更することはできないと思いますし、その辺りの問題はないかと思って…

問題は、同じコンピュータを使っていてもOSが変わればライセンスが認証しなくなるということ。かなり厳しめのライセンスになっちゃいますね

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">