WindowsのプロダクトIDを取得する方法について
WindowsのプロダクトIDを取得する方法について
Active Basic 4.24.00を使用してプログラムを書いています。
(AB5はバグがあるためまだ使用していません。)
http://www.ruriplus.com/msaccess/tch/tch_036.html
上記のサイト様を参考に、WindowsのProduct IDを取得しようとしています。
(参考というより、コピペなのですが・・・)
しかし、きちんと取得してくれません。
AB用に以下のように書き直しました。
Function GetWinProductId() As String
Dim stSubKey As String
Dim stProductid As String
Dim hkeyRoot As HKEY
Dim lErr As Long
Dim OSVER As OSVERSIONINFO
Dim dummy As Long
stProductid=ZeroString(256)
OSVER.dwOSVersionInfoSize = Len(OSVER)
lErr = GetVersionEx(OSVER)
If lErr = 0 Then Exit Function
If OSVER.dwPlatformId = VER_PLATFORM_WIN32_NT Then
stSubKey = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
Else
stSubKey = "SOFTWARE\Microsoft\Windows\CurrentVersion"
End If
lErr = RegOpenKeyEx(HKEY_LOCAL_MACHINE, stSubKey, &0, KEY_READ, hkeyRoot)
If lErr <> 0 Then
MessageBox(0,"ERROR","1",0)
Exit Function
End If
lErr = RegQueryValueEx(hkeyRoot, "ProductId", &0, REG_SZ,stProductid, 256)
If lErr <> 0 Then
MessageBox(0,"ERROR","2",0)
Exit Function
End If
lErr = RegCloseKey(hkeyRoot)
If lErr <> 0 Then
MessageBox(0,"ERROR","3",0)
Exit Function
End If
GetWinProductId = Left$(stProductid, 255 /*InStr(1, stProductid, vbNullChar, vbBinaryCompare)*/)
End Function
MessageBox(0,GetWinProductId(),0,0)
※
Left$(stProductid, 255 /*InStr(1, stProductid, vbNullChar, vbBinaryCompare)*/)
この部分は、よく分からなかったので、とりあえず放置しています。
その前に、変数『stProductid』に値が帰ってこないのです。
(RegQueryValueExでエラーが返る。FormatMessageでエラーを見ると、正常終了している。・・・が、0以外の値が返ってくる)
すいませんが、ご存知の方、やり方をご教示ください。
お願いします。
お礼
syoyaku072様 どうもありがとうございます!!m(_ _)m 他のページでもソースを保存してみまして、 .ID = ~ .Name = ~ などと試しに記述してみるとうまく動いてくれました。非常に楽しいです^^ この度はご親切にお教えいただきまして誠にありがとうございました!m(_ _)m