Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: *VB 6* Ohjelma käynnistymään wintöötin käynnistyessä

Nobo [04.12.2005 21:52:33]

#

Kokeilin sitä Blazen koodia, että ohjelma käynnistyisi wintoosan käynnistyessä niin en saanut toimimaan. Koodi tässä:

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

'ExenNimi esim. munsofta.exe
'Polku esim. c:\Program Files\Munsofta (ilman viimeistä \)
'Palauttaa 0, jos kirjoittaminen onnistui, virhenumeron jos ei
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\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

Call KirjotaRunOnceen("nl.exe, C:\WINDOWS\System") ja tuosta se errormessagetti "Argument not optional".
Missä vika?

sqwiik [04.12.2005 22:32:47]

#

Ihan suoraan käännettynä, argumentti ei valinnainen. Tuossa kutsussasihan on vain yksi argumentti, string-muotoinen "nl.exe, C:\WINDOWS\System".
Pitäisiköhän sen olla muotoa "nl.exe", "C:\WINDOWS\System"?

Nobo [04.12.2005 22:41:10]

#

Hmm, tosiaan. :D Siinähän se vika onkin. Mutta ihmetyttää vain, miksei se kuitenkaan tallenna regeihin mitään vaikkei virheilmoitusta tulekaan..

EDIT: Toimiipas, kun vähän säädin..

Hinc [02.01.2006 09:46:26]

#

laita exe tiedosto rekisteriin toimii 100% varmasti,:
HKEY_LOCAL_MACHINE\\Software\microsoft\windows\current version\run

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta