Avatar billede toh Nybegynder
27. april 2004 - 20:01 Der er 7 kommentarer og
1 løsning

Gemme i registreringsdatabasen

Jeg er ret ny på dette område og har behov for noget hjælp.

Jeg har lavet en FORM som indeholder følgende TextBoxe:

TextBox1 (indhold Torben)
TextBox2 (indhold 7034)

Den tekst som jeg skriver i disse textbox skal gemmes i registreingsdatabasen, men ikke med SaveSetting da de skal placeres på et bestemt sted. Grunden hertil er, at jeg skal kunne anvende disse data uanset hvilken maskine jeg kobler mig på i netværket.

HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo

Hvordan får jeg den automatisk til at gemme de indtastede oplysninger på det korrekt sted i registreringsdatabasen. Da jeg er en novice på dette område vil det være rart hvis i kunne anvende de ovennævnte variabler.

Registreringsdatabasen ser sådan ud når jeg indsætter dem manuelt.

"Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\FLC Nord]

[HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo]
"InitLok"="7034"
"InitName"="Torben"
"
27. april 2004 - 20:05 #1
Placer dette i et modul:
Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Integer
End Type

Type FILETIME
    dwLowDateTime As Long
    dwHightDateTime As Long
End Type

Type VALENTA
    ve_valuename As Long
    ve_valuelen As Long
    ve_valueprtr As Long
    ve_type As Long
End Type

Public Declare Function adh_apiRegCloseKey _
    Lib "ADVAPI32" Alias "RegCloseKey" _
    (ByVal hKey As Long) As Long
Public Declare Function adh_apiRegConnectRegistry _
    Lib "ADVAPI32" Alias "RegConnectRegistryA" _
    (ByVal lpszComputerName As String, ByVal hKey As Long, _
    ByRef phkResult As Long) As Long
Public Declare Function adh_apiRegCreateKey _
    Lib "ADVAPI32" Alias "RegCreateKeyA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String, _
    ByRef phkResult As Long) As Long
Public Declare Function adh_apiRegCreateKeyEx _
    Lib "ADVAPI32" Alias "RegCreateKeyExA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String, _
    ByVal dwReserved As Long, ByVal lpszClass As String, _
    ByVal fdwOptions As Long, ByVal samDesired As Long, _
    ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
    ByRef phkResult As Long, _
    ByRef lpdwDisposition As Long) As Long
Public Declare Function adh_apiRegDeleteKey _
    Lib "ADVAPI32" Alias "RegKeyDeleteA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String) As Long
Public Declare Function adh_apiRegDeleteValue _
    Lib "ADVAPI32" Alias "RegDeleteValueA" _
    (ByVal hKey As Long, ByVal lpszValue As String) As Long
Public Declare Function adh_apiRegEnumKey _
    Lib "ADVAPI32" Alias "RegEnumKeyA" _
    (ByVal hKey As Long, ByVal iSubkey As Long, _
    ByVal lpszName As String, ByVal cchName As Long) As Long
Public Declare Function adh_apiRegEnumKeyEx _
    Lib "ADVAPI32" Alias "RegEnumKeyExA" _
    (ByVal hKey As Long, ByVal iSubkey As Long, _
    ByVal lpszName As String, ByRef lpcchName As Long, _
    ByVal lpdwReserved As Long, ByVal lpszClass As String, _
    ByRef lpcchClass As Long, _
    ByRef lpftLastWrite As FILETIME) As Long
Public Declare Function adh_apiRegEnumValue _
    Lib "ADVAPI32" Alias "RegEnumValueA" _
    (ByVal hKey As Long, ByVal iValue As Long, _
    ByVal lpszValue As String, ByRef lpcchValue As Long, _
    ByVal lpdwReserved As Long, ByRef lpdwType As Long, _
    lpbData As Any, ByRef lpcbData As Long) As Long
Public Declare Function adh_apiRegFlushKey _
    Lib "ADVAPI32" Alias "RegFlushKey" _
    (ByVal hKey As Long) As Long
Public Declare Function adh_apiRegGetKeySecurity _
    Lib "ADVAPI32" Alias "RegGetKeySecurity" _
    (ByVal hKey As Long, ByVal SecInf As Long, _
    ByRef pSecDesc() As Byte, ByRef lpcbSecDesc As Long) _
    As Long
Public Declare Function adh_apiRegLoadKey _
    Lib "ADVAPI32" Alias "RegLoadKeyA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String, _
    ByVal lpszFile As String) As Long
Public Declare Function adh_apiRegNotifyChangeKeyValue _
    Lib "ADVAPI32" Alias "RegNotifyChangeKeyValue" _
    (ByVal hKey As Long, ByVal fWatchSubTree As Integer, _
    ByVal fdwNotifyFilter As Long, ByVal hEvent As Long, _
    ByVal fAsync As Integer) As Long
Public Declare Function adh_apiRegOpenKeyEx _
    Lib "ADVAPI32" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String, _
    ByVal dwReserved As Long, ByVal samDesired As Long, _
    ByRef hKey As Long) As Long
Public Declare Function adh_apiRegQueryInfoKey _
    Lib "ADVAPI32" Alias "RegQueryInfoKeyA" _
    (ByVal hKey As Long, ByVal lpszClass As String, _
    ByRef lpcchClass As Long, ByVal lpdwReserved As Long, _
    ByRef lpcSubKeys As Long, ByRef lpcchMaxSubkey As Long, _
    ByRef lpcchMaxClass As Long, ByRef lpcValeus As Long, _
    ByRef lpcchMaxValueName As Long, _
    ByRef lpcbMaxValueData As Long, _
    ByRef lpcbSecurityDescriptor As Long, _
    ByRef lpftLastWriteTime As FILETIME) As Long
Public Declare Function adh_apiRegQueryMultipleValues _
    Lib "ADVAPI32" Alias "RegQueryMultipleValuesA" _
    (ByVal hKey As Long, ByRef val_list As VALENTA, _
    ByVal num_vals As Long, ByRef lpValueBuf() As Byte, _
    ByRef ldwTotsize As Long) As Long
Public Declare Function adh_apiRegQueryValue _
    Lib "ADVAPI32" Alias "RegQueryValueA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String, _
    ByVal lpszValue As String, ByRef pcbValue As Long) As Long
Public Declare Function adh_apiRegQueryValueEx _
    Lib "ADVAPI32" Alias "RegQueryValueExA" _
    (ByVal hKey As Long, ByVal lpszValueName As String, _
    ByVal lpdwReserved As Long, ByRef lpdwType As Long, _
    lpbData As Any, ByRef lpcbData As Long) As Long
Public Declare Function adh_apiRegReplaceKey _
    Lib "ADVAPI32" Alias "RegReplaceKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, _
    ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
Public Declare Function adh_apiRegRestoreKey _
    Lib "ADVAPI32" Alias "RegRestoreKeyA" _
    (ByVal hKey As Long, ByVal lpszFile As String, _
    ByVal fdw As Long) As Long
Public Declare Function adh_apiRegSaveKey _
    Lib "ADVAPI32" Alias "RegSaveKeyA" _
    (ByVal hKey As Long, ByVal lpszFile As String, _
    ByRef lpsa As SECURITY_ATTRIBUTES) As Long
Public Declare Function adh_apiRegSetKeySecurity _
    Lib "ADVAPI32" Alias "RegSetKeySecurity" _
    (ByVal hKey As Long, ByVal si As Long, _
    ByRef psd() As Byte) As Long
Public Declare Function adh_apiRegSetValue _
    Lib "ADVAPI32" Alias "RegSetValueA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, _
    ByVal dwType As Long, ByVal lpData As String, _
    ByVal cbData As Long) As Long
Public Declare Function adh_apiRegSetValueEx _
    Lib "ADVAPI32" 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
Public Declare Function adh_apiregUnloadKey _
    Lib "ADVAPI32" Alias "RegUnloadKeyA" _
    (ByVal hKey As Long, ByVal lpszSubKey As String) As Long

Public Const delete = &H10000
Public Const READ_CONTROL = &H20000
Public Const WRITE_DAC = &H40000
Public Const WRITE_OWNER = &H80000
Public Const Synchronize = &H100000

Public Const STANDARD_RIGHTS_READ = READ_CONTROL
Public Const STANDARD_RIGHTS_WRITE = READ_CONTROL
Public Const STANDARD_RIGHTS_EXECUTE = READ_CONTROL
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const SPECIFIC_RIGHTS_ALL = &HFFFF&

Public Const APPLICATION_ERROR_MASK = &H20000000
Public Const ERROR_SEVERITY_SUCCESS = &H0&
Public Const ERROR_SEVERITY_INFORMATIONAL = &H40000000
Public Const ERROR_SEVERITY_WARNING = &H80000000
Public Const ERROR_SEVERITY_ERROR = &HC0000000

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
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

Public Const KEY_QUERY_VALUE = &H1&
Public Const KEY_SET_VALUE = &H2&
Public Const KEY_CREATE_SUB_KEY = &H4&
Public Const KEY_ENUMERATE_SUB_KEYS = &H8&
Public Const KEY_NOTIFY = &H10&
Public Const KEY_CREATE_LINK = &H20&
Public Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY And Not Synchronize
Public Const KEY_WRITE = STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY And Not Synchronize
Public Const KEY_EXECUTE = KEY_READ And Not Synchronize
Public Const KEY_ALL_ACCESS = STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK And Not Synchronize

Public Const REG_NONE = 0
Public Const REG_SZ = 1
Public Const REG_EXPAND_SZ = 2
Public Const REG_BINARY = 3
Public Const REG_DWORD = 4
Public Const REG_DWORD_LITTLE_ENDIAN = 4
Public Const REG_DWORD_BIG_ENDIAN = 5
Public Const REG_LINK = 6
Public Const REG_MULTI_SZ = 7
Public Const REG_RESOURCE_LIST = 8
Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9
Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10


Public Function adhSetRegistryValueFromPath _
    (ByVal strPath As String, ByVal varValue As Variant) _
    As Variant
    ' Sets a value based on a registry path
    '
    ' From Access 97 Developer's Handbook
    ' by Litwin, Getz, and Gilbert. (Sybex)
    ' Copyright 1997. All Rights Reserved.
    '
    ' In:
    '  strPath    A registry path
    '  varValue    The value to be set
    '              The VarType of the variant determines
    '              What data type in the registry is
    '              used
    '
    ' Out:
    '  If there is an error then IsError on the return
    '  value will return True. Otherwise the return
    '  value has no meaning.
    '
    ' Example:
    '  ? adhSetRegistryValueFromPath("\HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive", "1")

    Dim hKey As Long
    Dim strValue As String
    Dim retCode As Long

    If Not IsError _
        (adhGetKeyAndValueFromPath(strPath, hKey, strValue)) Then
        Select Case varType(varValue)
        Case vbEmpty
            Stop
        Case vbNull
            Stop
        Case vbInteger
            Stop
        Case vbLong
            retCode = adh_apiRegSetValueEx(hKey, strValue, _
                0&, REG_DWORD, CLng(varValue), 4)
            Select Case retCode And APPLICATION_ERROR_MASK
            Case ERROR_SEVERITY_SUCCESS
            Case Else
                adhSetRegistryValueFromPath = CVErr(0)
            End Select
        Case vbSingle
            Stop
        Case vbDouble
            Stop
        Case vbCurrency
            Stop
        Case vbDate
            Stop
        Case vbString
            retCode = adh_apiRegSetValueEx(hKey, strValue, _
                0&, REG_SZ, ByVal CStr(varValue), Len(varValue))
            Select Case retCode And APPLICATION_ERROR_MASK
            Case ERROR_SEVERITY_SUCCESS
            Case Else
                adhSetRegistryValueFromPath = CVErr(0)
            End Select
        Case vbObject
            Stop
        Case vbError
            Stop
        Case vbBoolean
            Stop
        Case vbVariant
            Stop
        Case vbDataObject
            Stop
        Case vbByte
            Stop
        Case vbArray
            Stop
        Case Else
            Stop
        End Select
        Call adh_apiRegCloseKey(hKey)
    End If
End Function


Herefter gemmer du således:
adhSetRegistryValueFromPath "HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo", Værdi
27. april 2004 - 20:06 #2
lidt lang kode, men det skyldes at den kan en masse andet :o)
Avatar billede toh Nybegynder
27. april 2004 - 20:17 #3
Ja man bliver helt svimmel, ThomasJepsen i den sidste linie hvad er værdi er det indhold af min textbox1 og textbox2
27. april 2004 - 21:02 #4
Sorry, ja der burde have stået:
adhSetRegistryValueFromPath "HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo", textbox1
Avatar billede kedde65 Praktikant
28. april 2004 - 08:52 #5
Og et lidt mere gennemskuelig kode her :-)

Private Sub Command1_Click()
    Dim wsh
    Set wsh = CreateObject("WScript.Shell")
   
    wsh.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo\InitLok", Textbox1.Text
    wsh.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo\InitName
", Textbox2.Text
   
    Set wsh = Nothing
End Sub

VH CK
28. april 2004 - 20:31 #6
Hvad mener du med "Mere gennemskueligt"??? Jeg kan slet ikke finde rundt i dit eks.! Jeg synes at mit er meget nemmere.....NOT!

Jeg var slet ikke klar over, at det kunne gøres så simpelt - smart :o)
Avatar billede kedde65 Praktikant
29. april 2004 - 07:34 #7
Og det skal da også lige siges at der altså også findes en

wsh.regdelette
samt en
wsh.regread

Som henholdsvis sletter en nøgle, og læser en nøgle.

VH CK
Avatar billede toh Nybegynder
29. april 2004 - 15:36 #8
Genialt og overskueligt "kedde65" tak for det og her er dine point

VH
Toh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester