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 FunctionMutta 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 SubAihe on jo aika vanha, joten et voi enää vastata siihen.