Hur läsa/skriva till Registeret om värdet är av typen REG_EXPAND_SZ?? Som jag förståt det är det Unicode text. Du kan jutesta att kopiera det till en array och spara det:Registerproblem
Jag måste dynamiskt förändra Path:en vid start av applikation.
Hur kan jag läsa pathen och editera den?
Pathen ligger i
HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Control\Session Manager\Environment"
Den är av typen REG_EXPAND_SZ.
Jag har kod för att ändra andra typer av värden, men inte för REG_EXPAND_SZ.
<code>
'hämta bef path ur registret
r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Control\Session Manager\Environment", 0, KEY_ALL_ACCESS, hRegKey)
If r = 0 Then 'nyckel finns, öppnad
Buffer = Space(255)
Length = Len(Buffer)
r = RegQueryValueEx(hRegKey, "Path", 0, REG_SZ, ByVal Buffer, Length)
Buffer = Left(Buffer, Length - 1)
BefPath = Buffer
'BefPath blir ej korrekt pga typen REG_EXPAND_SZ
'Koden fungerar på andra typer exvis REG_SZ
r = RegCloseKey(hRegKey)
End If
Public Const REG_SZ = 1 ' Nollterminerad textsträng
Public Const REG_BINARY = 3 ' Byte sekvens bestående av icketext
Public Const REG_DWORD = 4 ' 32-bitars heltal
'öppna nycklar
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
'Skapa Nycklar
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, _
lpSecurityAttributes As SECURITY_ATTRIBUTES, _
phkResult As Long, _
lpdwDisposition As Long _
) As Long
</code>
/ MikaelSv: Registerproblem
<code>
Dim Test as String
Dim Data() as Byte
Test = "Hello world!" & vbNullChar
Data = Test
</code>