home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Troubleshooting Netware Systems
/
CSTRIAL0196.BIN
/
attach
/
msj
/
v10n10
/
vb40.exe
/
WCIMR.EXE
/
WCGETREG.CLS
< prev
next >
Wrap
Text File
|
1995-10-01
|
5KB
|
161 lines
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "WCIMGetReg"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
Option Explicit
' public class to get and set registry values
' key to open
Public strKey As String
' current toplevel key
Public hKey As Long
' error message to pass back
Public ErrorMessage As String
Public Function GetRegValue(RegEntry As WCIMReg) As Boolean
Dim lpszData As String
Dim lpnData As Long
Dim lpcbData As Long
Dim hkResult As Long
' function to get a value from the registry
On Error GoTo GetRegValueError
ErrorMessage = ""
' open the key
If RegOpenKey(hKey, strKey, hkResult) = ERROR_SUCCESS Then
' figure out if we are looking for strings or DWORDs
Select Case RegEntry.DataType
' string
Case REG_SZ
' initialize
lpszData = Space$(255)
lpcbData = Len(lpszData)
' get the value
If RegQueryValueEx(hkResult, RegEntry.Entry, ByVal 0, REG_SZ, ByVal lpszData, lpcbData) = ERROR_SUCCESS Then
If lpcbData > 1 Then
RegEntry.Value = Left$(lpszData, lpcbData - 1)
Else
RegEntry.Value = ""
End If
GetRegValue = True
Else
RegEntry.Value = Null
GetRegValue = False
End If
' DWORD
Case REG_DWORD
' initialize
lpnData = 0
lpcbData = Len(lpnData)
' get the data
If RegQueryValueEx(hkResult, RegEntry.Entry, ByVal 0, REG_DWORD, lpnData, lpcbData) = ERROR_SUCCESS Then
RegEntry.Value = CLng(lpnData)
GetRegValue = True
Else
RegEntry.Value = Null
GetRegValue = False
End If
End Select
' clean up
If RegCloseKey(hkResult) <> ERROR_SUCCESS Then
ErrorMessage = "RegCloseKey Failed: " & strKey
GoTo GetRegValueError
End If
Else
' clean up
RegEntry.Value = Null
ErrorMessage = "RegOpenKey Failed: " & strKey
GoTo GetRegValueError
End If
GetRegValue = True
Exit Function
GetRegValueError:
GetRegValue = False
Exit Function
End Function
Public Function SetRegValue(RegEntry As WCIMReg) As Boolean
Dim lpStrData As String
Dim lpNumData As Long
Dim lpValueName As String
Dim hkResult As Long
Dim cbData As Long
' this function sets an entry in the registry
On Error GoTo SetRegValueError
ErrorMessage = ""
' if the value we are setting is null, remove it from the registry
If IsNull(RegEntry.Value) Then
If RegOpenKey(hKey, strKey, hkResult) <> ERROR_SUCCESS Then
ErrorMessage = "RegOpenKey Failed: " & strKey
GoTo SetRegValueError
Else
If RegDeleteValue(hkResult, RegEntry.Entry) <> ERROR_SUCCESS Then
ErrorMessage = "RegDeleteValue Failed: " & CStr(RegEntry.Entry)
GoTo SetRegValueError
End If
End If
Else
' value has content, open or create the key
If RegOpenKey(hKey, strKey, hkResult) <> ERROR_SUCCESS Then
'try to create the key
If RegCreateKey(hKey, strKey, hkResult) <> ERROR_SUCCESS Then
ErrorMessage = "RegCreateKey Failed: " & strKey
GoTo SetRegValueError
End If
End If
lpValueName = RegEntry.Entry
Select Case RegEntry.DataType
Case REG_SZ
lpStrData = CStr(RegEntry.Value)
cbData = Len(lpStrData) + 1
If RegSetValueEx(hkResult, lpValueName, 0, REG_SZ, ByVal lpStrData, cbData) <> ERROR_SUCCESS Then
ErrorMessage = "RegSetValueEx Failed: " & lpValueName
GoTo SetRegValueError
End If
Case REG_DWORD
lpNumData = CLng(RegEntry.Value)
cbData = 4
If RegSetValueEx(hkResult, lpValueName, 0, REG_DWORD, lpNumData, cbData) <> ERROR_SUCCESS Then
ErrorMessage = "RegSetValueEx Failed: " & lpValueName
GoTo SetRegValueError
End If
End Select
End If
SetRegValue = True
If RegCloseKey(hkResult) <> ERROR_SUCCESS Then
ErrorMessage = "RegCloseKey Failed: " & strKey
GoTo SetRegValueError
End If
Exit Function
SetRegValueError:
RC = RegCloseKey(hkResult)
SetRegValue = False
Exit Function
End Function