タイトル | : USBメモリーのシリアル値取得 |
記事No | : 11666 |
投稿日 | : 2016/05/17(Tue) 18:39 |
投稿者 | : 食う寝る走る |
開発環境 OS:Windows7(32bit)プロフェッショナル IDE:VS2015 コミュニティ(VB.net)
トングルのように使いたいのですが、 USBシリアル(USBメモリー)値が差し込みポートごとに異なってしまいます。
(1)特定のPCのM/B・・・製造番号 (2)USBメモリー・・・シリアル値 (3)ある期間ごとにキーの発行が必要・・・使用期限を設定
の組み合わせで制約してソフトを動かすKEYを発行して運用を考えております。
(1)〜(3)を文字列連結して文字列→16進数コード化(暗号化)したものをKEYとして、 iniファイルへ記述。
ソフト起動時に、自分のPC環境を読んで、iniファイルのKEYと参照して、OK/NG判定。
管理側のPCで 運用PCのM/B製造番号を入れて、配布するUSBとの組み合わせでKEYを発行し 配布するつもりです。
USBのシリアル値を取得は出来て、管理者用のKEY発行のキージェネレータを作りました。 が・・・
出来あがり、USBメモリーの差し込み口を変えると、USBシリアル値が変わるようなのですが・・・。 どこに刺しても、同じ値を表すようには出来ないものでしょうか? この値はPC個体が変わる毎に変化するものなのでしょうか?
生成したKEYをポートごとに変換して複数持っておくとかの工夫で回避できれば◎なのですが。
よろしくお願いいたします。
こちらの環境下での値になります。 'ポート1にUSBメモリを指した場合 Caption = General UDisk USB Device SerialNo.= USBSTOR\DISK&VEN_GENERAL&PROD_UDISK&REV_5.00\6&5A3F01E&0&_&0
’ポート2にUSBメモリを指した場合 Caption = General UDisk USB Device SerialNo.= USBSTOR\DISK&VEN_GENERAL&PROD_UDISK&REV_5.00\6&D15C087&0&_&0
ボタン1つ要です。 '-------------------------------------------------------------------------------------
Imports System.Management '要:参照設定[System.Management]
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim l_strSQL As String = "SELECT * FROM Win32_DiskDrive where InterfaceType='USB'" For Each drive As ManagementObject In New ManagementObjectSearcher("root\CIMV2", l_strSQL).Get() Dim l_strCap As String = drive.GetPropertyValue("Caption") Dim l_strNo As String = drive.GetPropertyValue("PNPDeviceID") 'MsgBox(String.Format("Caption = {0}" & vbCrLf & "SerialNo.= {1}", l_strCap, l_strNo))
Console.WriteLine((String.Format("Caption = {0}" & vbCrLf & "SerialNo.= {1}", l_strCap, l_strNo)))
Next End Sub
End Class
|