Declare PtrSafe Function RegCloseKey Lib "ADVAPI32" (ByVal hKey As LongPtr) As Long
Declare PtrSafe Function RegOpenKeyEx Lib "ADVAPI32" Alias "RegOpenKeyExA" (ByVal hKey As LongPtr, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare PtrSafe Function RegQueryValueExstr Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As LongPtr, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Function saGetRegValue(RootKey As String, SubKey As String, DName As String) As String
'********************************************************
'*** レジストリ値の取得(テキストのみ)
'***
'********************************************************
Dim Valuedata As String
Dim Length As Long
Dim Ret, RK, hnd
Select Case RootKey
Case "HKCR", "HKEY_CLASSES_ROOT": RK = &H80000000
Case "HKCU", "HKEY_CURRENT_USER": RK = &H80000001
Case "HKCC", "HKEY_CURRENT_CONFIG": RK = &H80000005
Case "HKDD", "HKEY_DYN_DATA": RK = &H80000006
Case "HKLM", "HKEY_LOCAL_MACHINE": RK = &H80000002
Case "HKU", "HKEY_USERS": RK = &H80000003
End Select
Ret = RegOpenKeyEx(RK, SubKey, 0, 1, hnd)
If Ret = 0 Then
Valuedata = String(250, Chr(0))
Length = Len(Valuedata)
Ret = RegQueryValueExstr(hnd, DName, 0, 0, Valuedata, Length)
Else
Valuedata = Chr(0)
End If
Call RegCloseKey(hnd)
saGetRegValue = StrConv(LeftB(StrConv(Valuedata, vbFromUnicode), Length - 1), vbUnicode)
End Function