01. april 2004 - 11:07
#3
Lav en form med
Private Sub Form_Load()
UserLogon = UCase(GetString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName"))
End Sub
Og et modul med
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
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public UserLogon As String
Public Const REG_SZ = 1 ' Unicode nul terminated string
Public Const REG_DWORD = 4 ' 32-bit number
Public Function GetString(HKEY As Long, strPath As String, strValue As String)
Dim keyhand As Long
Dim datatype As Long
Dim lResult As Long
Dim strBuf As String
Dim lDataBufSize As Long
Dim intZeroPos As Integer
r = RegOpenKey(HKEY, strPath, keyhand)
lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ")
lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
intZeroPos = InStr(strBuf, Chr$(0))
If intZeroPos > 0 Then
GetString = Left$(strBuf, intZeroPos - 1)
Else
GetString = strBuf
End If
End If
End If
End Function
I dette eks. henter jeg info på logon navn på bruger
01. april 2004 - 14:39
#7
Lav et modul med dette i
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
Private 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 Any) As Long
Private 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
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Const REG_SZ = 1
Const REG_BINARY = 3
Const REG_DWORD = 4
Public Enum hKey
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
Private Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
If lResult = 0 Then
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, Chr$(0))
lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
If lResult = 0 Then
RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
End If
ElseIf lValueType = REG_BINARY Or REG_DWORD Then
Dim strData As Integer
lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
If lResult = 0 Then
RegQueryStringValue = strData
End If
End If
End If
End Function
Function GetString(hKey As hKey, Path As String, Name As String) As String
'Ret = GetString(HKEY_CURRENT_USER, \"KeyPath\", \"StringName eller BinaryName\")
Dim Ret As Long, ReturString As String
RegOpenKey hKey, Path, Ret
ReturString = RegQueryStringValue(Ret, Name)
RegCloseKey Ret
GetString = ReturString
End Function
Function SaveDWordValue(hKey As hKey, KeyPath As String, ValueName As String, DWordValue As Long)
'SaveDWordValue HKEY_CURRENT_USER, \"KeyPath\", \"DWordName\", 999999999
Dim Ret As Long
If Val(DWordValue) > 999999999 Or Val(DWordValue) < 0 Then
Exit Function
End If
RegCreateKey hKey, KeyPath, Ret
RegSetValueEx Ret, ValueName, 0, REG_DWORD, DWordValue, Len(DWordValue)
RegCloseKey Ret
End Function
Function SaveStringValue(hKey As hKey, KeyPath As String, ValueName As String, StringValue As String) As Long
'SaveStringValue HKEY_CURRENT_USER, \"KeyPath\", \"StringName\", \"ABC\"
Dim Ret, RetErr As Long
RegCreateKey hKey, KeyPath, Ret
RetErr = RegSetValueEx(Ret, ValueName, 0, REG_SZ, ByVal StringValue, Len(StringValue))
RegCloseKey Ret
End Function
Function SaveBinaryValue(hKey As hKey, KeyPath As String, ValueName As String, BinaryValue As Long)
'SaveBinaryValue HKEY_CURRENT_USER, \"KeyPath\", \"BinaryName\", 255
Dim Ret As Long
If Val(BinaryValue) > 255 Or Val(BinaryValue) < 0 Then
Exit Function
End If
RegCreateKey hKey, KeyPath, Ret
RegSetValueEx Ret, ValueName, 0, REG_BINARY, CByte(BinaryValue), 4
RegCloseKey Ret
End Function
Function DeleteKeySetting(hKey As hKey, KeyPath As String, ValueName As String)
'DeleteKeySetting HKEY_CURRENT_USER, \"KeyPath\", \"ValueName\"
Dim Ret As Long
RegCreateKey hKey, KeyPath, Ret
RegDeleteValue Ret, ValueName
RegCloseKey Ret
End Function
Function DeleteKeyPath(hKey As hKey, KeyPath As String)
'DeleteKeyPath HKEY_CURRENT_USER, \"KeyPath\"
Dim Ret As Long
RegCreateKey hKey, KeyPath, Ret
RegDeleteKey Ret, "\"
RegCloseKey Ret
End Function
For at læse
UserLogon = GetString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows T\CurrentVersion\Winlogon", "DefaultUserName")
Gem 'SaveDWordValue HKEY_CURRENT_USER, \"KeyPath\", \"DWordName\", 999999999
SaveDWordValue HKEY_CURRENT_USER, "Software\VB and VBA Program Settings\SagsDb\Filter", "Name", 22