во! давно мучался с чтением значения HEX, вот попробуйте всякими Хитманами и другими примерами прочитать HEX значения и чтобы получилось, что то вроде "HH FF 00 CC CF..." (это я так, отфонаря). Вообщем многие примеры вообще это неумеют! А те которые умеют, если сравнить их с экспортированными данными из RegEdit'a то выходит чаще всего несоответствие. А мне тогда надо было ещё это значение (HEX) так в файл записать, как это делает RegEdit, ну короче, что один в один было. Мучался, мучался... и написал модуль который для получения значений из реестра делает с помошью этого же RegEdit'a, правдо он тупо в файл сохраняят, но доделать чтоб он значения в переменный пихал, нефиг делать, прочитать файл - много ума ненадо. Такой способ хоть и довольно медленный, за то полученный результат будет с 100% точностью.
Public Sub ExprortReg(Path$, File$)
WinTemp$ = "C:\"
If Right$(Path$, 1) = "\" Then Path$ = Left$(Path$, Len(Path$) - 1)
run$ = WinPath$ & "Regedit.exe /e " & WinTemp$ & Spliting(File$, "\" & " " & Path$
Shell run$
n = FreeFile
On Error Resume Next
Open WinTemp$ & Spliting(File$, "\" For Input As #n: Size = LOF(n): Close #n
If Size < 5 Then
begin:
If VsegoSlesh = 0 Then
For i% = 1 To Len(Path$)
If Mid(Path$, i%, 1) = "\" Then VsegoSlesh = VsegoSlesh + 1
Next i%
End If
VsegoSlesh = VsegoSlesh - 1
SubPath$ = Znak_to_Left(Path$, "\", Val(VsegoSlesh))
If Right$(SubPath$, 1) = "\" Then SubPath$ = Left$(SubPath$, Len(SubPath$) - 1)
run$ = WinPath$ & "Regedit.exe /e " & WinTemp$ & Spliting(File$, "\" & " " & SubPath$
Shell run$
Close #n
Open WinTemp$ & Spliting(File$, "\" For Input As #n: Size = LOF(n): Close #n
If Size < 5 Then GoTo begin:
Path$ = "[" & Path$
Close #n
Open WinTemp$ & Spliting(File$, "\" For Input As #n
Do While Not EOF(n)
Line Input #n, Stroka$
If Left$(Stroka$, Len(Path$)) = Path$ Or Left$(strPast, Len(Path$)) = Path$ Then
If Left(Stroka$, 1) = "[" Then strPast = Stroka$
r$ = r$ & Stroka$ & vbNewLine
End If
Loop
Close #n
Kill WinTemp$ & Spliting(File$, "\"
Open File$ For Output As #n
Print #n, "REGEDIT 4"
Print #n, r$
Close #n
Else
FileCopy WinTemp$ & Spliting(File$, "\", File$
Kill WinTemp$ & Spliting(File$, "\"
End If
End Sub
Public Function Znak_to_Left(Stroka$, Znak$, numSlesh As Byte)
For i% = 1 To Len(Stroka$)
If Mid(Stroka$, i%, 1) = Znak$ Then s = s + 1
If s = numSlesh Then
Znak_to_Left = Left$(Stroka$, i% - 1)
Exit For
End If
Next i%
End Function
Private Function Spliting(sFullPath As String, point As String)
If sFullPath = "" Then Exit Function
Dim str1() As String
str1 = Split(sFullPath, point)
Spliting = str1(UBound(str1))
End Function
---------------------------------
Ну а вызывать, так:
ExprortReg "HKEY_CURRENT_USER\Software", App.Path & "\1.reg"
---------------------------------
P/S! Некоторые ключи регэдит нехочет экспортировать, ну под умного канает, мол если там какие-то вроде пароли, то он не экспортирует их, но если взять экспортировать на одну ветвь выше, чтоб та ветвь с паролями входила в состав той что мы экспортируем, то регедит вроде и ту с паролями тоже экспортирует и в файл пишет. Ну короче тут в модуле я это старался реализовать, вроде получилось, но это на 99%...