Da qualche parte ho un esempio ora ci provo a postartelo:

Metti queste dichiarazioni in un modulo
Option Explicit
'Variabili
Private lResult As Long
'Costanti
Private Const KEY_ALL_ACCESS As Long = &H2003F
Public Const HKEY_CURRENT_USER As Long = &H80000001
Public Const HKEY_LOCAL_MACHINE As Long = &H80000002
Private Const ERROR_SUCCESS As Long = 0
Private Const REG_SZ As Long = 1
Public Const REG_DWORD As Long = 4
'Dichiarazioni
Private Declare Function OSRegOpenKeyEx Lib "Advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function OSRegCloseKey Lib "Advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
Private Declare Function OSRegSetValueEx Lib "Advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpszValueName As String, ByVal dwReserved As Long, ByVal fdwType As Long, lpbData As Any, ByVal cbData As Long) As Long

Sempre nel modulo metti queste funzioni:
'Apertura chiave registro sistema
Public Function RegOpenKey(KeyRoot As Long, KeyName As String, phkResult As Long) As Boolean
'------------------
'Valori in entrata:
'KeyRoot = HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USER (Chiavi principali del Registro di configurazione).
'KeyName = Percorso della chiave che si vuole aprire (ad esempio "SOFTWARE\Microsoft\Windows\CurrentVersion").
'------------------
'Valori in uscita:
'Se la funzione ha esito corretto (True), phkResult contiene l'identificativo della chiave appena creata.
'In caso contrario, phkResult sarà uguale a "".
'------------------
On Error GoTo 0
lResult = OSRegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, phkResult)
If lResult = ERROR_SUCCESS Then
RegOpenKey = True
Else
RegOpenKey = False
End If
End Function

'crea una stringa in una chiave già aperta
Public Function RegSetStringValue(ByVal hKey As Long, ByVal strValueName As String, ByVal strData As String) As Boolean
'------------------
'Valori in entrata:
'hKey = L'identificativo di una chiave aperta o creata.
'strValueName = Il nome del valore che si vuole creare.
'strData = Dati in formato stringa che si desidera inserire nel Registro.
'------------------
'Valori in uscita:
'Se la funzione ha esito corretto (True), il valore specificato è salvato nel Registro.
'In caso contrario, nessun valore sarà salvato.
'------------------
On Error GoTo 0
If hKey = 0 Then
Exit Function
End If
lResult = OSRegSetValueEx(hKey, strValueName, 0&, REG_SZ, ByVal strData, LenB(StrConv(strData, vbFromUnicode)) + 1)
If lResult = ERROR_SUCCESS Then
RegSetStringValue = True
Else
RegSetStringValue = False
End If
End Function

'Chiusura chiave registro sistema
Public Function RegCloseKey(hKey As Long) As Boolean
'------------------
'Valori in entrata:
'hKey = L'identificativo di una chiave aperta o creata.
'------------------
'Valori in uscita:
'Se la funzione ha esito corretto (True), la chiave specificata viene chiusa.
'------------------
On Error GoTo 0
lResult = OSRegCloseKey(hKey)
If lResult = ERROR_SUCCESS Then
RegCloseKey = True
Else
RegCloseKey = False
End If
End Function


Ora che hi le funzioni nel modulo le richiami così:
Call RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run ", hendle)
Call RegSetStringValue(hendle, "Nome_servizio(quello che vuoi tu)", "path all'applicazione")
Call RegCloseKey(hendle)