проблемы с записью в реестр

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

проблемы с записью в реестр

Сообщение dasker » 13.03.2005 (Вс) 22:34

граждане есть код добаваления программы в автозагрузку:

Код: Выделить всё
'Декларация
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey 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 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 Sub AddToStartup(ByVal sDesc As String, ByVal sFile As String)
Dim lRegKey As Long
RegOpenKey HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", lRegKey
RegSetValueEx lRegKey, sDesc, 1, 1, ByVal sFile, Len(sApp)
RegCloseKey lRegKey

End Sub

Private Sub Command1_Click()
AddToStartup "calc", "c:\calc.exe"
AddToStartup "calc", "c:\calc.exe"
End Sub


но в реестре создается только название ключа, а параметра, в данном случае пути к программе ничего не записывает
windows Xp, sp1, vb6

_Hiser_
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 28.01.2005 (Пт) 11:34
Откуда: Барнаул

Сообщение _Hiser_ » 15.03.2005 (Вт) 17:53

Энто делается вот так. :wink:
Код: Выделить всё
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, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) 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         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long

Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_SET_VALUE = &H2
Private Const SUBNAME = "Software\Microsoft\Windows\CurrentVersion\Run"

Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Private Function AddToStartup(ByVal sDesc As String, ByVal sFile As String) As Boolean
Dim hkey As Long
Dim secattr As SECURITY_ATTRIBUTES
If CBool(RegCreateKeyEx(HKEY_LOCAL_MACHINE, SUBNAME, 0, "", 0, KEY_CREATE_SUB_KEY Or KEY_SET_VALUE, secattr, hkey, 0)) Then Exit Function
RegSetValueEx hkey, sDesc, 0, REG_SZ, ByVal sFile, Len(sFile)
RegCloseKey hkey
AddToStartup = True
End Function

Private Sub Command1_Click()
Me.Caption = AddToStartup("calc", "c:\calc.exe")
End Sub

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 15.03.2005 (Вт) 18:18

Ну да, а можно и так:

Код: Выделить всё
Set Reg = CreateObject("WScript.Shell")
Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\calc", "c:\calc.exe"


По-моему, так проще.

killerb
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 27.01.2005 (Чт) 23:08
Откуда: Днепропетровск

Сообщение killerb » 26.03.2005 (Сб) 16:26

Andrev твой код выдает ошибку "Varaable not defined"
Жизнь - это карусель, на которой никому не дано удержаться надолго. Стивен Кинг

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 27.03.2005 (Вс) 0:22

Дык в Reference надо галочку поставить :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 27.03.2005 (Вс) 14:02

Какую галочку?
На это не смотрите! Это не подпись!!!!!!

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 27.03.2005 (Вс) 15:05

Andrev И на хрена нужно таскать с собой лишнюю библиотеку?
На некоторых системах твой код будет работать некорректно.

VERITAS
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 12.12.2004 (Вс) 20:31

Сообщение VERITAS » 27.03.2005 (Вс) 16:59

А если кроме этого с реестром поработать надо, то вот прекраснейший модуль от GSerg'a

или же еще один универсальный модуль, который оптимизирован по самое "нехочу"

:wink: Ok :wink:
Вложения
modRegistry.zip
Registry Developer module by GSerg
(7.72 Кб) Скачиваний: 24
RegMod.zip
Max Optimized Registry module
(1.38 Кб) Скачиваний: 27
No comments ...


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

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

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 82

    TopList