Редактирование реестра

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ПЕТР
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 23.07.2003 (Ср) 6:25
Откуда: г. Братск

Редактирование реестра

Сообщение ПЕТР » 23.07.2003 (Ср) 7:09

Может кто-нибудь все таки знает как из VB записать(изменить) параметр в реестре с типом DWORD. :?

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Re: Редактирование реестра

Сообщение GoGosha » 23.07.2003 (Ср) 8:59

ПЕТР писал(а):Может кто-нибудь все таки знает как из VB записать(изменить) параметр в реестре с типом DWORD. :?


Это типа беззнаковое целое четыре байта?
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

ПЕТР
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 23.07.2003 (Ср) 6:25
Откуда: г. Братск

Re: Редактирование реестра

Сообщение ПЕТР » 23.07.2003 (Ср) 9:04

GoGosha писал(а):
ПЕТР писал(а):Может кто-нибудь все таки знает как из VB записать(изменить) параметр в реестре с типом DWORD. :?


Это типа беззнаковое целое четыре байта?


АГА типа

только я уже понял, что мне нафиг не надо DWORD, пойдет и BINARY. :shock:

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 23.07.2003 (Ср) 9:07

Да если бинари получить то дворд проще простого(copymemory)
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 23.07.2003 (Ср) 13:57

Попробуй это, правда я ОЧЕНЬ сомневаюсь, что подойдёт

Код: Выделить всё
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
    Dim a As Double
    Dim arr(7) As Byte
   
    'запись
    a = 255 ^ 4 + 255 ^ 3 + 255 ^ 2 + 255
    Print a

    CopyMemory arr(0), a, 8
    CopyMemory arr(0), arr(4), 4
    эЗаписать первые четыре байта arr в реестр
   
    'записать arr
    '-----------
    'чтение
    'Данные в arr(0)
    CopyMemory arr(4), arr(0), 4
    CopyMemory a, arr(0), 8
End Sub
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 23.07.2003 (Ср) 17:09

Пример не мой.
Вложения
registry.zip
Save Dword
(9.59 Кб) Скачиваний: 83
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

ПЕТР
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 23.07.2003 (Ср) 6:25
Откуда: г. Братск

Сообщение ПЕТР » 01.08.2003 (Пт) 4:15

Предыдущий пример не будет записывать DWORD, он запишет BINARY.
Пришлось поступить проще, не очень элегантно но надежно.
Создаем файл с расширением reg и запускаем его с regedit, вот собственно и все.
Public Function RegSetValueMy(regKey As String, subKey As String, TYPE_REG As Long, Value As String)
Dim outStr As String
Dim r As Long

outStr = "REGEDIT4" & vbCrLf & vbCrLf
outStr = outStr & "[" & regKey & "]" & vbCrLf
outStr = outStr & Chr(34) & subKey & Chr(34) & "="
Select Case TYPE_REG
Case REG_SZ
outStr = outStr & Chr(34) & Value & Chr(34)
Case REG_BINARY
outStr = outStr & Value
Case REG_DWORD
outStr = outStr & "dword:" & String(8 - Len(Value), "0") & Value
Case Else
RegSetValueMy = 1
Exit Function
End Select
outStr = outStr & vbCrLf
Open "c:\tmp.reg" For Output As #1
Print #1, outStr
Close #1
r = Shell("c:\windows\command\start /wait regedit -s c:\tmp.reg", vbNormalFocus)
RegSetValueMy = 0
End Function
Пример tmp.reg

REGEDIT4

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001

Mirus
Бывалый
Бывалый
 
Сообщения: 259
Зарегистрирован: 09.12.2001 (Вс) 18:25
Откуда: Russia

Сообщение Mirus » 01.08.2003 (Пт) 9:27

Код: Выделить всё
Option Explicit
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 RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const REG_DWORD As Long = 4
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
Private Const strPath As String = "System\CurrentControlSet\Services\VxD\VNETSUP"
Private Const strValueName As String = "EnablePlainTextPassword"
Private Const lData As Long = 1
Private Sub Command1_Click()
Dim KeyHand As Long
Call RegCreateKey(HKEY_LOCAL_MACHINE, strPath, KeyHand)
Call RegSetValueEx(KeyHand, strValueName, 0&, REG_DWORD, lData, 4)
Call RegCloseKey(KeyHand)
End Sub
Mirus

ПЕТР
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 23.07.2003 (Ср) 6:25
Откуда: г. Братск

Сообщение ПЕТР » 01.08.2003 (Пт) 9:39

А ты сам пробовал RegSetValueEx(KeyHand, strValueName, 0&, REG_DWORD, lData, 4)
она не ложит DWORD в реестр.
Поэтому и весь кипиж. :evil:

Mirus
Бывалый
Бывалый
 
Сообщения: 259
Зарегистрирован: 09.12.2001 (Вс) 18:25
Откуда: Russia

Сообщение Mirus » 01.08.2003 (Пт) 11:11

А ты сам пробовал

Я тебе кинул 100% рабочий код.
Mirus

Mirus
Бывалый
Бывалый
 
Сообщения: 259
Зарегистрирован: 09.12.2001 (Вс) 18:25
Откуда: Russia

Сообщение Mirus » 01.08.2003 (Пт) 12:10

После выполнения кода в реестре появляется это:
Изображение
Mirus

ПЕТР
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 23.07.2003 (Ср) 6:25
Откуда: г. Братск

Сообщение ПЕТР » 04.08.2003 (Пн) 4:25

Точно работает! Ну ты колдун.

Я исдолбил его всяко ну, не идет зараза делает BINARY
А сейчас все нормально ШАЙТАН ей богу.

Наверное тупею. :oops:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList