我想用写注册表的方法在
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
下建立一个
"MYEXE"="D:\\MYEXE\\MYEXE.EXE"
以使得D:\MYEXE\MYEXE.EXE能在开机时自动加载起动运行,应该怎么办?
改动注册表后原有的开机自动起动的程序应不受影响。
希望能有高手教我,最好能以函数、模块的方式给出原程序,谢谢大家的帮助,我会不胜感激的。

解决方案 »

  1.   

    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (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 LongPrivate Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const REG_SZ = 1Private Sub Command1_Click()
        Dim hKey As Long
        RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey
        RegSetValueEx hKey, "MYEXE", 0, REG_SZ, ByVal "D:\\MYEXE\\MYEXE.EXE", Len("D:\\MYEXE\\MYEXE.EXE")End Sub
      

  2.   

    哦,路径应该是这样吧: D:\MYEXE\MYEXE.EXE 你多写了一个 \ , 我就 COPY 了,自己改改吧
      

  3.   


    Dim lbuffer As Long, sbuffer As String, hKey As Long, ltype As Long, ldata As Long
    '读取健值
    Public Function getvalue(mainkey As Long, subkey As String, keyv As String, svalue) As Long
    rtn = RegOpenKeyEx(mainkey, subkey, 0, KEY_READ, hKey)
    If rtn <> ERROR_SUCCESS Then
        getvalue = rtn
        Exit Function
    End If
    rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal 0, lbuffer)
    getvalue = rtn
    Select Case ltype
    Case REG_SZ
        lbuffer = 255
        sbuffer = Space(lbuffer)
        rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal sbuffer, lbuffer)
        getvalue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
        If InStr(sbuffer, Chr(0)) <> 0 Then
        svalue = Left(sbuffer, InStr(sbuffer, Chr(0)) - 1)
        Else
        svalue = ""
        End If
    Case REG_EXPAND_SZ
        sbuffer = Space(lbuffer)
        rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal sbuffer, lbuffer)
        getvalue = rtn
        If rtn <> ERROR_SUCCESS Then
           Exit Function
        End If
        svalue = Left(sbuffer, InStr(sbuffer, Chr(0)) - 1)
    Case REG_DWORD
        rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ldata, lbuffer)
        getvalue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
        svalue = ldata
    Case REG_BINARY
        rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ldata, lbuffer)
        getvalue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
        svalue = ldata
    End Select
    RegCloseKey hKey
    End Function
    '设置健值
    Public Function SetValue(mainkey As Long, subkey As String, keyv As String, ltype, svalue, lbuffer As Long) As Long
    Dim ss As SECURITY_ATTRIBUTES
    ss.nLength = Len(ss)
    ss.lpSecurityDescriptor = 0
    ss.bInheritHandle = True
    rtn = RegCreateKeyEx(mainkey, subkey, 0, "", 0, KEY_WRITE, ss, hKey, S)
    SetValue = rtn
    If rtn <> ERROR_SUCCESS Then
        Exit Function
    End If
    Select Case ltype
    Case REG_SZ
        lbuffer = Len(svalue)
        rtn = RegSetValueEx(hKey, keyv, 0, ltype, ByVal svalue, lbuffer)
        SetValue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
    Case REG_EXPAND_SZ
        lbuffer = Len(svalue)
        rtn = RegSetValueEx(hKey, keyv, 0, ltype, ByVal svalue, lbuffer)
        SetValue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
    Case REG_DWORD
        lbuffer = 4
        rtn = RegSetValueExA(hKey, keyv, 0, ltype, svalue, lbuffer)
        SetValue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
    Case REG_BINARY
        rtn = RegSetValueExA(hKey, keyv, 0, ltype, svalue, lbuffer)
        SetValue = rtn
        If rtn <> ERROR_SUCCESS Then
            Exit Function
        End If
    End Select
    RegCloseKey hKey
    End Function
    '打开键
    Public Function OpenKey(mainkey As Long, subkey As String, ByVal ltype As Long, hKey As Long)
    OpenKey = RegOpenKeyEx(mainkey, subkey, 0, ltype, hKey)
    End Function
    '关闭健
    Public Function CloseKey(hKey As Long)
    CloseKey = RegCloseKey(hKey)
    End Function'删除健值
    Public Function DeleteValue(mainkey As Long, subkey As String, keyv As String)
    rtn = RegOpenKeyEx(mainkey, subkey, 0, KEY_WRITE, hKey)
    If rtn = 0 Then
    rtn = RegDeleteValue(hKey, keyv)
    rtn = RegCloseKey(hKey)
    End If
    End Function
    Public Function RegCreate(mainkey As Long, subkey As String, phkResult As Long, Create) As Boolean
    On Error GoTo ErrShowDim lResult As Long
    Dim SA As SECURITY_ATTRIBUTES
    RegCreate = (RegCreateKeyEx(mainkey, subkey, 0, "", reg_option_non_volatite, key_all_access, SA, phkResult, Create) = ERROR_SUCCESS)
    RegCloseKey phkResult
    ErrShow:
    If Err.Number <> 0 Then
    RegCreate = False
    End If
    End Function这是一个模块里的内容,看看就明白了
      

  4.   

    wxy_xiaoyu(☆然也☆╭∩╮(︶︿︶)╭∩╮) 
    的简单易懂,虽然他没改写成函数,呵,但是我能看懂,也能改成函数。
     tshow(瑞科ROOM)的我想一定是写通用式的,但是没告诉我里面哪个是哪个,怎么用,我看得有点儿头晕晕的,呵。
    我会认真看,认真学的,试完了明天来结贴,谢谢你们的帮助。
      

  5.   

    wxy_xiaoyu(☆然也☆╭∩╮(︶︿︶)╭∩╮)    
    的简单易懂,虽然他没改写成函数,呵,但是我能看懂,也能改成函数。  
     tshow(瑞科ROOM)的我想一定是写通用式的,但是没告诉我里面哪个是哪个,怎么用,我看得有点儿头晕晕的,呵。  
    本来说明天来结贴的,呵,一试,然也的真不错,呵。
    也感谢瑞科朋友的帮助,所以然也给了80瑞科给了20。如果瑞科能详细说明你的东东的话,也许我就要倒过来了,呵。
    瑞科给我的东西我还要细细看以进一步提高,真心的谢谢你们的帮助,心里的感谢不是给多少分能表达的……:)