Olen käyttänyt hakua, ja löytänytkin tietoa windowsin rekisteriin kirjoittamisesta.
Ohjelmani sisältää Moduulin ja se taas tämän koodin:
Private Const HKEY_CURRENT_USER As Long = &H80000001 Private Const READ_CONTROL As Long = &H20000 Private Const STANDARD_RIGHTS_WRITE As Long = (READ_CONTROL) Private Const KEY_SET_VALUE As Long = &H2& Private Const KEY_CREATE_SUB_KEY As Long = &H4& Private Const SYNCHRONIZE As Long = &H100000 Private Const KEY_WRITE As Long = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE)) Private Const REG_SZ As Long = 1& Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type 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, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey 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, ByRef lpData As Any, ByVal cbData As Long) As Long Public Function KirjotaRunOnceen(ExenNimi As String, Polku As String) As Long Dim Handle As Long, Created As Long Dim SecAttrs As SECURITY_ATTRIBUTES With SecAttrs .nLength = Len(SecAttrs) .lpSecurityDescriptor = 0& .bInheritHandle = 1& End With Call RegCreateKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\RunOnce", 0&, "", 0&, KEY_WRITE, SecAttrs, Handle, Created) KirjoitaRunOnceen = RegSetValueEx(Handle, ExenNimi, 0&, REG_SZ, ByVal Polku & "\" & ExenNimi & vbNullChar, Len(Polku & "\" & ExenNimi & vbNullChar)) Call RegCloseKey(Handle) End Function
Mutta ei toimi. Apua?
Mitä kirjoitat rekisteriin? SaveSettigillä voi simppelisti kirjoittaa ja GetSettingillä lukea Windowsin rekisteriä.
ööh.. :P Tarkoituksena olisi saada ohjelman aukeamaan aina windowsin käynnistyessä.
Kopioi kuvake ohjelmaan startup kansioon....
En sitten tajunnut hölkösenpöläystä..
Kansioon C:/Documents and Settings/[user]/Käynnistä-valikko/Ohjelmat/Käynnistys.
Mutta miten tuota koodia pitäisi muutella että jos esim ohjelma sijaitsisi C:/Documents and Settings/SuppoTaalasmaa/Työpöytä/lollo.exe niin se kirjoittaisi rekisteriin myös tuon saman polun? Ja jos ohjelma taas sijaitsisi C:/lollo.exe niin silloin polkuna olisi myös tuo?
App.Path ehkä ratkaisu?
voisiko joku kirjoittaa selkeän koodi vinkin siitä miten ohjelman saa kirjoittamaan rekisteriin itsensä että käynnistyisi kun windows käynnistyy? uskoisin siitä olevan apua monelle.
Tuossa oikeassa reunassa on tuollainen ihme-nappi kuin Haku (löytyy myös muualta)...
https://www.ohjelmointiputka.net/keskustelu/5458-wintoosan-rekisteri
https://www.ohjelmointiputka.net/keskustelu/5643-rekisteristä-viel-kerran
Private Sub Form_Load() Dim Reg As Object Set Reg = CreateObject("wscript.shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\" & "NIMI", App.Path & "\" & App.EXEName & ".exe" End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.