步骤1:添加注册表操作类
在项目中新建一个类文件 AutoStartHelper.vb,粘贴以下代码:
Imports Microsoft.Win32
Imports System.IO
Public Class AutoStartHelper
    Private Const RunRegistryKey As String = "Software\Microsoft\Windows\CurrentVersion\Run"
    Private Shared ReadOnly AppName As String = "MyApplicationName" ' 自定义应用标识名'
    ''' <summary>
    ''' 获取当前程序路径(自动处理空格)
    ''' </summary>
    Public Shared ReadOnly Property AppPath As String
        Get
            Return """" & Application.ExecutablePath & """"
        End Get
    End Property
    ''' <summary>
    ''' 启用/禁用自启动
    ''' </summary>
    Public Shared Sub SetAutoStart(enable As Boolean)
        Try
            Using key = Registry.CurrentUser.OpenSubKey(RunRegistryKey, True)
                If enable Then
                    key.SetValue(AppName, AppPath)
                Else
                    key.DeleteValue(AppName, False)
                End If
            End Using
        Catch ex As Exception
            MessageBox.Show($"操作注册表失败: {ex.Message}")
        End Try
    End Sub
    ''' <summary>
    ''' 检查当前自启动状态
    ''' </summary>
    Public Shared Function IsAutoStartEnabled() As Boolean
        Try
            Using key = Registry.CurrentUser.OpenSubKey(RunRegistryKey, False)
                Dim value = key.GetValue(AppName)
                Return value IsNot Nothing AndAlso value.ToString() = AppPath
            End Using
        Catch ex As Exception
            Return False
        End Try
    End Function
End Class
步骤2:创建设置界面
在窗体设计器中添加控件:
- 添加一个 CheckBox控件,Name属性设为chkAutoStart
- 添加一个 Button控件,Name属性设为btnSave,Text设为 "保存设置"
窗体代码 Form1.vb:
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 窗体加载时更新复选框状态'
        chkAutoStart.Checked = AutoStartHelper.IsAutoStartEnabled()
    End Sub
    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        ' 保存设置时应用选择'
        AutoStartHelper.SetAutoStart(chkAutoStart.Checked)
        MessageBox.Show("设置已保存,重启后生效")
    End Sub
    Private Sub chkAutoStart_CheckedChanged(sender As Object, e As EventArgs) Handles chkAutoStart.CheckedChanged
        ' 实时显示状态文本'
        lblStatus.Text = If(chkAutoStart.Checked, "已启用开机自启动", "已禁用开机自启动")
    End Sub
End Class
步骤3:添加状态标签(可选)
在窗体上添加一个 Label 控件:
- Name属性设为 lblStatus
- Text属性清空
- AutoSize设为True
步骤4:添加管理员权限支持(如果需要全局设置)
- 右键项目 -> 添加 -> 新建项 -> 应用程序清单文件
- 找到并修改清单文件中的 <requestedExecutionLevel>节点:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
项目结构示意图
你的项目
├── Form1.vb          (主窗体)
├── AutoStartHelper.vb (注册表操作类)
├── app.manifest      (权限配置文件)
└── My Project
    └── Application.myapp
使用说明
- 程序启动时会自动检测当前自启动状态
- 用户通过复选框切换启用/禁用状态
- 点击"保存设置"按钮应用更改
- 状态标签会实时显示当前设置状态
扩展建议
- 添加设置持久化(使用 My.Settings保存用户偏好)
- 实现自动检测程序路径变化
- 添加UAC盾牌图标(管理员模式时显示)
- 支持多用户/全局设置切换
完整项目可通过以下方式验证:
- 运行程序并勾选复选框
- 打开注册表编辑器定位到:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- 查看是否存在对应的注册表项
- 重启系统验证程序是否自启动
 
               
    
默认评论
Halo系统提供的评论