`

VB 开机自动运行程序

    博客分类:
  • vb
阅读更多

以下列出三种不同方法的代码供大家参考

1、注册表方式

模块代码

Option Explicit

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

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
RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

Public Const
REG_SZ = 1

Public Const HKEY_LOCAL_MACHINE = &H80000002

'*************************************************************************
'**函 数 名: SetAutoRun
'**输 入: ByVal Autorun(Boolean)
'**功能描述: 随WINDOWS自动启动/取消启动模块
'**调用方法: Call SetAutoRun(True/False)
'**作 者: Mr.David
'**日 期: 2006-09-05 09:07:25
'*************************************************************************

Public Sub SetAutoRun(ByVal Autorun As Boolean)

Dim KeyId As Long
Dim
MyexePath As String
Dim
regkey As String

MyexePath = App.Path & "\" & App.EXEName & ".exe" '获取程序位置

regkey = "Software\Microsoft\Windows\CurrentVersion\Run" '键值位置变量

Call RegCreateKey(HKEY_LOCAL_MACHINE, regkey, KeyId) '建立

If Autorun Then

RegSetValueEx KeyId, "MySoftware", 0&, REG_SZ, ByVal MyexePath, LenB(MyexePath)

Else

RegDeleteValue KeyId, "MySoftware"

End If

RegCloseKey KeyId

End Sub



调用方法

SetAutoRun(ByVal Autorun As Boolean)



-----------------------------------------------------------------------------------------------

2、利用Vb5stkit.dll里的函数

窗体部分代码,加入6个按钮。

Option Explicit

Private Sub CmdAddStartup_Click() '在开始菜单的启动程序组下创建记事本的快捷方式
Call OSfCreateShellLink("\启动", "记事本", GetWindowsPath & "\Notepad.exe", "")
End Sub

Private Sub
CmdAddDeskTop_Click() '在桌面创建记事本的快捷方式
Call OSfCreateShellLink("..\..\桌面", "记事本", GetWindowsPath & "\Notepad.exe", "")
End Sub

Private Sub
CmdAddProgram_Click() '在程序菜单的Notepad程序组下创建记事本的快捷方式
Call OSfCreateShellGroup("Notepad") '先建立程序组
Call OSfCreateShellLink("Notepad", "记事本", GetWindowsPath & "\Notepad.exe", "")
End Sub

Private Sub
CmdAddStartMenu_Click()
Dim i As Long
For
i = 1 To 5 '在开始菜单创建记事本的快捷方式,必须用循环才能创建?
Call OSfCreateShellLink("..\..\「开始」菜单", "记事本", GetWindowsPath & "\Notepad.exe", "")
Next
End Sub

Private Sub
CmdQuickLaunch_Click() '在快捷工具栏下创建记事本的快捷方式
Call OSfCreateShellLink("..\..\Application Data\Microsoft\Internet Explorer\Quick Launch", "记事本", GetWindowsPath & "\Notepad.exe", "")
End Sub

Private Sub
CmdDelAllLink_Click()
Call OSfRemoveShellLink("..\..\「开始」菜单", "记事本") '删除开始菜单上的快捷方式
Call OSfRemoveShellLink("..\..\桌面", "记事本") '删除桌面上的快捷方式
'Call OSfRemoveShellLink("Notepad", "记事本") '删除Notepad程序组下的快捷方式,这样不能删除程序组
Call RemoveShellGroup '删除Notepad程序组下的快捷方式
Call OSfRemoveShellLink("\启动", "记事本") '删除启动菜单下的快捷方式
Call OSfRemoveShellLink("..\..\Application Data\Microsoft\Internet Explorer\Quick Launch", "记事本") '删除快捷工具栏下的快捷方式
End Sub

Private Sub
RemoveShellGroup()
On Error GoTo ToExit '打开错误陷阱
'------------------------------------------------
'RmDir删除一个存在的目录或文件夹。语法RmDir Path
'必要的 path 参数是一个字符串表达式,用来指定要删除的目录或文件夹。path 可以包含驱动器。如果没有指定驱动器,则 RmDir 会在当前驱动器上删除目录或文件夹。
'说明如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。在试图删除目录或文件夹之前,先使用 Kill 语句来删除所有文件。
Kill (GetProgarmPath(Me.hWnd) & "\Notepad\记事本.lnk")
RmDir (GetProgarmPath(Me.hWnd) &
"\Notepad")
'------------------------------------------------
Exit Sub

ToExit:
Resume Next
End Sub



模块代码

Option Explicit

'-----------------------------------------------------
' 创建和删除快捷方式
'-----------------------------------------------------
' CmdAddStartup "创建启动程序组快捷方式"
' CmdAddDeskTop "创建桌面快捷方式"
' CmdAddStartMenu "创建开始菜单快捷方式"
' CmdAddProgram "创建程序组下的快捷方式"
' CmdQuickLaunch "创建快捷工具栏的快捷方式"
' CmdDelAllLink "删除所有快捷方式"
'-----------------------------------------------------
'要在VB中创建Windows的快捷方式,需要用到VB的一个动态链接库
'Vb5stkit.dll。在该动态链接库中提供了三个函数
'OSfCreateShellGroup、OSfCreateShellLink、OSfRemoveShellLink
'分别用于创建快捷方式程序组、创建快捷方式和删除快捷方式。
'-----------------------------------------------------

Declare Function OSfCreateShellGroup Lib "Vb5stkit.dll" _
Alias "fCreateShellFolder" (ByVal lpstrDirName As String) As Long

'lpstrDirName指定了程序组的名称
'-----------------------------------------------------

Declare Function OSfCreateShellLink Lib "Vb5stkit.dll" _
Alias "fCreateShellLink" (ByVal lpstrFolderName As String, _
ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String) As Long

'lpstrfoldername指定保存快捷方式的文件夹
'lpstrlinkname指定快捷方式的文件名
'lpstrLinkpathe指定快捷方式所指向的应用程序或文件
'lpstrLinkArguments是程序运行所需的参数
'-----------------------------------------------------

Declare Function OSfRemoveShellLink Lib "Vb5stkit.dll" Alias _
"fRemoveShellLink" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String) As Long

'获取Windows目录
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias _
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'获得文件夹路径
Private Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, ByVal lpszPath As String, ByVal nFolder As Long, ByVal fCreate As Long) As Long

Private Const
Max_Path = 260 '缓冲区大小
Private Const CSIDL_PROGRAMS = &H2 '程序组常量

'*************************************************************************
'**函 数 名: GetWindowsPath
'**输 入: 无
'**输 出: (String) -
'**功能描述: 得到Windows路径
'**全局变量:
'**调用模块:
'**作 者: Mr.David
'**日 期: 2006-09-19 19:49:17
'**修 改 人:
'**日 期:
'**版 本: V1.0.0
'*************************************************************************

Public Function GetWindowsPath() As String
Dim
ChrLen As Long, WinDir As String

WinDir = Space$(Max_Path)
ChrLen = GetWindowsDirectory(WinDir, Max_Path)

WinDir = Left$(WinDir, ChrLen)
GetWindowsPath = WinDir
End Function

'*************************************************************************
'**函 数 名: GetProgarmPath
'**输 入: frmHwnd(Long) -
'**输 出: (String) -
'**功能描述: 获取开始菜单程序组的路径
'**作 者: Mr.David
'**日 期: 2006-09-19 19:48:16
'*************************************************************************

Public Function GetProgarmPath(frmHwnd As Long) As String
Dim
CSILD_NUM As Long, strBouff As String

strBouff = String$(Max_Path, 0)

SHGetSpecialFolderPath frmHwnd, strBouff, CSIDL_PROGRAMS,
0
GetProgarmPath = Left$(strBouff, InStr(1, strBouff, Chr$(0)) - 1)
End Function



-----------------------------------------------------------------------------------------------

3、引用系统里面都有的WSHom.Ocx

Option Explicit

'*************************************************************************
'**函 数 名: SetAutoRun
'**输 入: ByVal Autorun(Boolean)
'**功能描述: 随WINDOWS自动启动/取消启动模块
'**调用方法: Call SetAutoRun(True/False)
'**作 者: Mr.David
'**日 期: 2006-09-05 09:07:25
'*************************************************************************

Public Sub SetAutoRun(ByVal Autorun As Boolean)
'WshShell 对象
'ProgId Wscript.Shell
'文件名 WSHom.Ocx

Dim WshShell As WshShell
Set WshShell = CreateObject("Wscript.Shell")

If Autorun Then
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe"
Else
WshShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName
End If

Set
WshShell = Nothing
End Sub

 

分享到:
评论

相关推荐

    vb 开机自动运行

    可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb程序开机自动运行可以使vb...

    开机自动运行程序(VB6.0源代码编写)

    本教程将详细介绍如何使用VB6.0编写开机自动运行程序。 首先,我们要了解Windows开机自启动的机制。在Windows中,可以通过注册表键`HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run`或`HKEY_...

    开机自动运行程序,希望对大家有用(VB6.0源代码编写)

    为了实现开机自动运行程序,首先我们需要创建一个VB6.0项目,然后编写代码来实现上述任一或多种开机自启动方法。例如,我们可以创建一个简单的VB6.0程序,该程序会在启动后向注册表添加一条记录,使得下次开机时自动...

    VB添加开机启动,开机自动运行功能.rar

    VB添加开机启动,开机自动运行功能,通过修改注册表的方法,让程序随windows电脑系统自动启动运行,VB6.0设置注册表随WINDOWS自动启动的功能,用到了一个随WINDOWS自动启动/取消启动模块AutoRun.bas,你可将此模块...

    编辑使VB开机自动运行

    ### 编辑使VB开机自动运行 #### 一、引言 在计算机系统中,让程序开机自动运行是一项常见的需求,特别是在系统维护、自动化任务执行等场景下尤为重要。本篇文章将详细阐述如何利用Visual Basic(简称VB)实现程序...

    vb 开机自动运行源码

    在VB(Visual Basic)编程中,创建一个程序使其能在计算机开机时自动运行,通常涉及到注册表的修改。本文将深入探讨如何使用VB实现这一功能,同时也会涉及注册表的读写操作,这对于初学者理解系统启动机制和VB编程至...

    vb.net开启和关闭开机自动启动源码

    通过这种方式,VB.NET开发者可以轻松地集成开机自启动功能,使得程序能够按照用户的意愿在每次开机时自动运行。这种功能常用于系统维护工具、监控软件或其他需要后台运行的应用。同时,提供关闭开机自启动的选项也是...

    VB给程序添加随系统启动(开机自动运行)功能.rar

    VB给程序添加随系统启动(开机自动运行)功能,跟随WINDOWS启动的控件,不多介绍了,相信大多数搞VB的都知道是什么意思,把你的程序添加到开机启动列表里,电脑一启动,就自动打开你的程序,或最小化的托盘图标处。

    vb.net开启和关闭开机自动启动程序

    在VB.NET编程环境中,开发人员有时需要实现对系统开机启动项的管理,以便于自定义程序的自动运行。本文将详细讲解如何使用VB.NET来开启和关闭开机自动启动程序。 首先,我们需要理解Windows操作系统中开机启动项的...

    开机自动运行程序代码

    ### 开机自动运行程序代码详解 #### 一、概述 本文档主要介绍了一种通过注册表设置程序在系统启动时自动运行的方法,并提供了一个具体的VBScript实现案例。此外,还简单涉及了另一种方法,即利用Vb5stkit.dll创建...

    VB.NET Winform窗口后台运行+防多开+开机后台自动启动示例-BgProcessTemplate.rar

    在VB.NET编程环境中,开发一款Winform应用程序时,有时我们需要实现窗口在后台静默运行、防止多实例同时打开以及能够开机自动启动的功能。这个“BgProcessTemplate.rar”压缩包提供了一个示例,帮助开发者理解并实现...

    VB设置程序开机自动运行的示例代码

    内容索引:VB源码,系统相关,开机运行,启动项,自动运行 VB设置程序开机自动运行的示例代码,这是个大家都熟悉的功能,现在有不少的软件都喜欢让自己的程序安装后自动随用户计算机启动,这样做有时候是为为提升程序...

    vb自动关机程序(win7,XP均可使用,有语音提示,可取消关机,可设置开机自动运行)

    该程序具备定时关机、自动关机、语音提示以及开机自动运行等多种功能,极大地提升了用户在日常使用电脑时的便利性。 首先,定时关机功能是VB自动关机程序的核心特性。用户可以根据自己的需求设定一个特定的时间点,...

    VB开机自动启动(带源码)

    在VB(Visual Basic)编程中,实现程序开机自动启动的方式是通过操作Windows注册表来完成的。注册表是Windows操作系统中的一个重要组件,它存储着系统和应用程序的各种设置信息。开机自启动就是在用户登录系统时,...

    开机自动启动程序.rar

    在Windows操作系统中,开机自动启动程序是指在系统启动时会自动运行的一系列应用程序或脚本。这些程序通常被设定为用户登录或者系统启动时执行,以便实现特定功能,如系统维护、后台服务、用户个性化设置等。VB.NET...

    VB6.0将程序设置成开机自动执行.rar

    VB6.0将程序设置成开机自动执行,这个功能估计大家都熟悉吧,把你编写的VB应用程序添加到Windows的开机启动列表中,电脑启动完成后,自动加载你的程序并运行,现在很多软件都有这功能,不过不要用太多,有些用户会烦...

    自动更换桌面,VB壁纸自动换程序源码

    7. 自动启动:为了让程序在开机后自动运行,VB可以利用注册表操作或任务计划程序API来实现。 在描述中提到的“www.2e3.org”可能是提供这个VB源码的网站。这个网站可能包含了源代码的下载链接、使用教程、示例以及...

    VB开机启动项管理程序附代码

    VB开机启动项管理程序附代码,'将以上代码存为模块。 '调用方法: '设为开机自动运行则用Call SetAutoRun(True) '取消开机自动运行则为 Call SetAutoRun(false)

    vb源码-开机自动发送邮件

    标题中的“vb源码-开机自动发送邮件”指的是使用Visual Basic(VB)编程语言编写的一段代码,这段代码被设计成在计算机启动时运行,并自动发送预设的电子邮件到指定的收件人。VB是一种流行的编程环境,尤其适用于...

    Vb添加程序到注册表开机启动项

    总结,VB添加程序到注册表开机启动项涉及到对Windows注册表的理解,VB的Registry对象操作,以及自动运行程序的概念。通过编写适当的VB代码,开发者可以实现程序的自启动功能,这对于开发系统服务或需要后台运行的...

Global site tag (gtag.js) - Google Analytics