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

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

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

Сообщение Lumen » 02.05.2006 (Вт) 17:25

Всем привет!!!
Вот столкнулся с такой проблемой: пишу прогу, которая должна запускаться вместе в Windows. Ясен перец, что прописываю её в HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\. Собственно вот процедура записи:
Код: Выделить всё
Public Sub AddToAutostart(spath As String)
    Dim Result As Long
    Dim Retval As Long
       
    Retval = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, Result)
    RegSetValueEx Result, "proga", 0, REG_SZ, ByVal spath, Len(spath)
    RegCloseKey Result
End Sub

Суть проблемы заключается в том, что из IDE все прекрасно работает, а при попытке запустить скомпиленное приложение прога просто-напросто грузит процессор и ничего никуда не пишет. Кто-нибудь может подсказать, с чем это связано?
Спасибо.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 02.05.2006 (Вт) 18:00

Отдельно функцию проверял?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 02.05.2006 (Вт) 18:54

В каком смысле?
В том то и дело, что код проги раньше работал (конкретно до переустановки. Однако до переустановки и после неё у меня стояла и теперь стоит Windows XP SP2). А теперь просто не знаю, что делать.

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 02.05.2006 (Вт) 18:59

Код: Выделить всё
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()
AddToStartup "Моя программа", "C:\soft\MyProg.exe"
End Sub
УДАЛЯЕТ
Private Sub Command2_Click()
DeleteAtStartup "Моя программа"
End Sub
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 02.05.2006 (Вт) 22:16

Спасибо, сейчас попробую.


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

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

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

    TopList