Does anybody have any views on using the registry as opposed to an ini file to store and retrieve information.
Also does anybody have exmple code of setting values in the registry and then retrieving them
Printable View
Does anybody have any views on using the registry as opposed to an ini file to store and retrieve information.
Also does anybody have exmple code of setting values in the registry and then retrieving them
It really depends on what you're doing and who's using your app - take, for example, an app being built for use in a company. Most of the time I'd use an ini because you can ship a standard ini with it and the app will work nicely straight away, plus users/administrators can copy the ini from one machine to another very easily. Support is easier because you just have to edit a flat file, which (pretty much) anyone can do. If, however, you're making an app that is intended for single-users on a single machine (say, a card game), then it's much neater to use the registry and the user won't notice any difference anyway.
For registry code, take a look at the Tips or search for "RegOpenKey".
HTH,
Toot
Thanks Toot
Ini files as Toot said are portable as you can copy your app to another comp, but that depends, if youre not making a freeware app then you could store all configurations in registry as well.
For accessing registry just download my Registry module from my homepage...
USe the regval property for returning and setting values:
Code:'for returning value
temp= regval("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SystemRoot")
'for setting value
regval("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SystemRoot")=temp
You should use the registry all the time. It's very easy to use and you can learn more about it by clicking the Registry link in the Topic Areas list that you see in the upper left-hand corner of the screen.
Here is a small code to access the Registry. the functions GetSetting and SaveSetting will retrieve and save Registry Values.
Code:Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As Long, ByVal lpSubKey As String) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Function RegQueryStringValue(ByVal hkey As Long, ByVal strValueName As String)
Dim lResult As Long
Dim lValueType As Long
Dim strBuf As String
Dim lDataBufSize As Long
On Error GoTo 0
lResult = RegQueryValueEx(hkey, strValueName, 0&, lValueType, ByVal 0&, lDataBufSize)
If lResult = ERROR_SUCCESS Then
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ")
lResult = RegQueryValueEx(hkey, strValueName, 0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
RegQueryStringValue = StripTerminator(strBuf)
End If
End If
End If
End Function
Public Function GetString(hkey As Long, strpath As String, strvalue As String)
Dim keyhand&
Dim datatype&
r = RegOpenKey(hkey, strpath, keyhand&)
GetString = RegQueryStringValue(keyhand&, strvalue)
r = RegCloseKey(keyhand&)
End Function
Function StripTerminator(ByVal strString As String) As String
Dim intZeroPos As Integer
intZeroPos = InStr(strString, Chr$(0))
If intZeroPos > 0 Then
StripTerminator = Left$(strString, intZeroPos - 1)
Else
StripTerminator = strString
End If
End Function
Public Sub savestring(hkey As Long, strpath As String, strvalue As String, strdata As String)
Dim keyhand&
r = RegCreateKey(hkey, strpath, keyhand&)
r = RegSetValueEx(keyhand&, strvalue, 0, REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(keyhand&)
End Sub