这个 是自启动的通用模块Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
Public Const REG_NONE = 0                       ' No value type
Public Const REG_SZ = 1                         ' Unicode nul terminated string
Public Const REG_EXPAND_SZ = 2                  ' Unicode nul terminated string
Public Const REG_BINARY = 3                     ' Free form binary
Public Const REG_DWORD = 4                      ' 32-bit number
Public Const REG_DWORD_BIG_ENDIAN = 5           ' 32-bit number
Public Const REG_MULTI_SZ = 7                   ' Multiple Unicode strings
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Public 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 Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String) As Long
'在注册表中添加删除自启动项目的模块
Sub main()
'定义hkey为句柄变量SubKey为注册表RUN项目变量、Exe为程序名变量
Dim hkey As Long, subkey As String, Exe As String
Select Case 
Case 1
'将程序设定成随WINDOWS启动而启动
'取程序所在路径,判断是否为根目录并分别加上程序全名并赋值给变量Exe
If Right(App.Path, 1) = "\" Then
Exe = App.Path + App.EXEName + ".exe" '根目录情况
Else: Exe = App.Path + "\" + App.EXEName + ".exe" '非根目录情况
End If
subkey = "Software\Microsoft\CurrentVersion\Run" '设置项目
RegCreateKey HKEY_CURRENT_USER, subkey, hkey '取得句柄
RegSetValueEx hkey,"MyExeName",0,REG_SZ,ByVal Exe,_LenB(StrConv (Exe,vbFromUnicode))+1 '写入键值
RegCloseKey hkey '关闭句柄
Case 0 '将程序设定成不随windows启动而启动
subkey = "Software\Microsoft\Windows\CurrentVersion\Run" '设置项目
RegOpenKey HKEY_CURRENT_USER, subkey, hkey '取得句柄
RegDeleteValue hkey, "MyExeName" '删除键值
RegCloseKey hkey '关闭句柄
End Select
End Sub
'使用方法是将上面的代码作为一个模块添加到工程中,程序中完成是否自启动的设置后,对
'启动标志变量进行赋值,然后调用该模块(即CALL Mark)。
'模块中操作的项目为HKEY_CURRENT_USER下的Run子键,只对当前用户有效,若想对所有拥护有效
'请更改取得句柄语句为RegOpenKey HKEY_LOCAL_MACHINE,SubKey,hKey即可
'模块中的"MYEXENAME"为欲自启动的应用程序名,用户可以根据自己的程序名修改

解决方案 »

  1.   

    微软提供了一个控件,你找找,好像叫ntsvr.ocx,可以用这个控件将程序变成服务程序
      

  2.   

    读写注册表或在form_load()中加filecopy函数将程序本身copy到启动目录。即开始菜单的启动。
      

  3.   

    對使用Microsoft的ntsvr.ocx,去msnd.microsoft.com下載  ﹐如著不到﹐可發E-Mail給為[email protected],我可以給妳發過去﹐,當寫成服務程序后﹐程序會被NTdang當成一個服務來啟動﹐﹐但在NT中注冊妳自己編寫的服務需要另寫程序﹐由于我用的是繁体98﹐書寫很不方便﹐控件的使用﹐及服務在NT中的注冊﹐可來發E-Mail給我﹐