用vb如何编写一个开机自启动的文件??

解决方案 »

  1.   

    如果让程序开机运行,需要先把文件编译为可执行文件放到特定目录下,并修改注册表让其开机便运行,路径是\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVerson\Run,用API函数在里面写入个字符串型的键值,并把内容修改成为你的文件名(包括路径)即可
      

  2.   

    关键是要调用哪个api函数来写入注册表啊?这个是问题的关键
      

  3.   

    http://www.vbaccelerator.com/home/vb/Code/Libraries/Registry_and_Ini_Files/Setting_Your_Application_to_Automatically_Run_When_Windows_Starts/article.asp
      

  4.   

    Global Const REG_SZ As Long = 1
    Global Const REG_DWORD As Long = 4Global Const HKEY_CLASSES_ROOT = &H80000000
    Global Const HKEY_CURRENT_USER = &H80000001
    Global Const HKEY_LOCAL_MACHINE = &H80000002
    Global Const HKEY_USERS = &H80000003Global Const ERROR_NONE = 0
    Global Const ERROR_BADDB = 1
    Global Const ERROR_BADKEY = 2
    Global Const ERROR_CANTOPEN = 3
    Global Const ERROR_CANTREAD = 4
    Global Const ERROR_CANTWRITE = 5
    Global Const ERROR_OUTOFMEMORY = 6
    Global Const ERROR_INVALID_PARAMETER = 7
    Global Const ERROR_ACCESS_DENIED = 8
    Global Const ERROR_INVALID_PARAMETERS = 87
    Global Const ERROR_NO_MORE_ITEMS = 259Global Const KEY_ALL_ACCESS = &H3FGlobal Const REG_OPTION_NON_VOLATILE = 0
    Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Public Function SetKeyValue(lPredefinedKey As Long, sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long)
           Dim lRetVal As Long
           Dim hKey As Long       lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
           lRetVal = SetValueEx(hKey, sValueName, lValueType, vValueSetting)
           RegCloseKey (hKey)End FunctionPublic Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long
        Dim lValue As Long
        Dim sValue As String    Select Case lType
            Case REG_SZ
                sValue = vValue
                SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue))
            Case REG_DWORD
                lValue = vValue
                SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, lValue, 4)
            End SelectEnd Functionsub command1_click()
                    SetKeyValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", 键名,程序路径 , REG_SZ
    end sub
      

  5.   

    方法一:直接调用一系列REg的API写注册表
    方法二:注册一个管道,然后调用reg命令或regedit来写注册表
    另外 不止是HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVerson\Run
    还有很多其他位置,比如“Hkey_Classes_Root\exefile\等等 效果会更好方法3(新):有个叫做srvany的程序,把你的程序安装成服务,用sc来启动,配合方法2的管道,保证效果好,隐蔽性强,稳定性好.另外,配合morphine外壳的hxdef100程序可以顺便隐藏你的程序留下的一切痕迹!