这个 是自启动的通用模块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"为欲自启动的应用程序名,用户可以根据自己的程序名修改
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"为欲自启动的应用程序名,用户可以根据自己的程序名修改
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货