作者在 2010-04-15 14:01:56 发布以下内容
vb添加启动项和删除启动项
'' 关闭打开的键
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
'建立键
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" Alias "RegSetValueExA" ( _
ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, _
ByVal lpData As String, ByVal cbData As Long) As Long
'删除加入的键值
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
ByVal hKey As Long, ByVal lpValueName As String) As Long
'打开注册表subkey的hkey
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Const HKEY_CURRENT_MACHINE = &H80000002
Private Const REG_SZ = 1
Private Sub Command1_Click()
'把应用程序加入自运行
Dim ret As Long
RegCreateKey HKEY_CURRENT_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", ret
RegSetValueEx ret, App.EXEName, 0, REG_SZ, ByVal App.Path & "\" & App.EXEName & ".exe", ByVal LenB(StrConv(App.Path & "\" & App.EXEName & ".exe", vbFromUnicode)) + 1
RegCloseKey ret
MsgBox "成功加入启动项", , "提示"
End Sub
Private Sub Command2_Click()
'把应用程序退出自运行
Dim ret As Long
ret = RegOpenKey(HKEY_CURRENT_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", hKey)
If ret = 0 Then
RegDeleteValue hKey, App.EXEName
RegCloseKey hKey
End If
MsgBox "成功删除启动项", , "提示"
End Sub