tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル USBメモリーのシリアル値取得
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。