Помогите с реестром

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

Помогите с реестром

Сообщение Helsing » 23.12.2005 (Пт) 7:33

:!: HELP!!! Как прописать программу в реестр, на автозагрузку? Спасибо всем кто ответит. :wink:

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 23.12.2005 (Пт) 9:06

Не, ну это уже слишком, это найти даже проще чем "как убить процесс", "как получить список процессов" :) :evil:

Прописывай в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Запустится как только пользователь залогинется (под которым этот ключ прописан был). Сюда:
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run
Для того, чтобы у новых юзеров тоже запускалась твоя прога после входа в систему, если это нужно, конечно (требуются админ права для записи в эту ветку).

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 23.12.2005 (Пт) 9:31

Проблема, чуть другая. Ключ в реестр прописывается, а вот значение не прописывается. :?

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 23.12.2005 (Пт) 9:47

Код покажи этот, бум искать где беда таится ;)

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 23.12.2005 (Пт) 9:57

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
If lRegKey Then
RegSetValueEx lRegKey, sDesc, 0, 1, ByVal sFile, Len(sApp)
RegCloseKey lRegKey
End If
End Sub

Private Function DeleteAtStartup(ByVal strValue As String)
Dim keyhand As Long
r = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", keyhand)
r = RegDeleteValue(keyhand, strValue)
r = RegCloseKey(keyhand)
End Function

Private Sub Command1_Click()
FullPathAndFileName = App.Path
If Right(App.Path, 1) <> "\" Then FullPathAndFileName = FullPathAndFileName & "\"
FullPathAndFileName = FullPathAndFileName & App.EXEName & ".exe"
AddToStartup "Моя программа", FullPathAndFileName = 1
End Sub

Private Sub Command2_Click()
DeleteAtStartup "Моя программа"
End Sub

Вот должен же путь файла прописаться! :x

P.S. Спасибо вам за то, что помогаете. :thumright:

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 23.12.2005 (Пт) 10:15

RegSetValueEx lRegKey, sDesc, 0, 1, ByVal sFile, Len(sApp)

Переменной, выделенной жирным шрифтом НЕТ! Вместо неё у тебя есть sFile. Если бы ты использовал Option Explicit, то такой проблемы бы не возникло.

AddToStartup "MyProgram", FullPathAndFileName = 1
Вот этого я вообще не понял. Прога даже скомпилироваться не должна - несоответствие типов выдаст. Наверное случайно при засандаливании в форум =1 приписал? :)

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 23.12.2005 (Пт) 10:20

ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!
ВСЁ ПОШЛО!!!!!!!!!!!!!!! :lol: :lol: :lol: :lol: :lol:

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 23.12.2005 (Пт) 10:24

Ой :oops: Единица там случайно оказалась. Еще раз спасибо. :wink:

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 23.12.2005 (Пт) 12:16

Можно объявить в References: Registry Access Function

Private Reg as Registry
Private Const HKEY_LOCAL_MACHINE = &H80000002
...
Set Reg=New Registry
Reg.UpdateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "MyProg","C:\MyProg.exe"
Set Reg=Nothing
...

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 23.12.2005 (Пт) 12:42

AndreyIl писал(а):Reg.UpdateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "MyProg","C:\MyProg.exe"

А если поменять имя уже созданному exe файлу, то накрылась автозагрузка. Надо переписывать код под другое имя. :wink:

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 23.12.2005 (Пт) 14:31

Я так понял, что эта прога сама должна прописать себя в автозагрузку.
Последний параметр: App.Path & "\" & App.EXEName & ".exe".

Helsing
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 23.12.2005 (Пт) 7:25

Сообщение Helsing » 24.12.2005 (Сб) 7:24

AndreyIl, ну значит я тебя не так понял. Спасибо огромное за помощь! :thumright:


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 32

    TopList