• WinFrom应用程序开机自启动


    我的思路是将启动路径写入注册表,在程序启动时执行将应用写入注册表,在下次重启时则会自动启动。

    1.程序里写自启动

    1.1 将程序路径写入注册表

    • 可以自己在应用程序写复选框是否开机自启动
    • 也可以在启动winfrom时,直接执行下面代码

    自启动执行代码

    #region注册表自启动
    try
    {
        string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
        string path = Application.ExecutablePath.ToLower();
        string name = Path.GetFileName(path);
        var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regPath, true);
        if (regKey == null)
            regKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(regPath);
            regKey.SetValue(name, path);
    }
    catch { }
    #endregion
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1.2 添加程序清单文件

    项目右键 》 添加 》新建项 》

    在这里插入图片描述

    修改代码

     <!-- UAC 清单选项
       如果想要更改 Windows 用户帐户控制级别,请使用
       以下节点之一替换 requestedExecutionLevel 节点。n
    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
      指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
      如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
      元素。
    -->
    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    改成

    
    
    • 1

    1.3 生成可执行文件时发生报错{ClickOnce 不支持请求执行级别requireAdministrator }

    项目右键 》 属性 》安全性 》

    去掉 【 启用ClickOnce安全设置(N) 】勾选
    在这里插入图片描述

    1.4 测试

    把自己的应用程序生成后,放到服务器,加上日志,看看开机后是否自启动。

    如果遇到问题,可以以管理员身份启动应用程序。

    1.5 删除注册表自启动

    方式一:程序里面

    #region注册表自启动
    try
    {
        string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
        string path = Application.ExecutablePath.ToLower();
        string name = Path.GetFileName(path);
        var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regPath, true);
        if (regKey != null)
    		regKey.DeleteValue(name, false);
    }
    catch { }
    #endregion
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    方式二:注册表里面

    CMD 执行regedit

    打开注册表后,Ctrl+F 查找程序名称

    2.注册表自启动的几种方式

    CMD执行regedit 注册表

    开机启动项有四个可选也可以同时添加
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    
    • 1
    • 2
    • 3
    • 4
    • 5

    右键 》 新建字符串值
    数据里面写应用程序路径即可
    在这里插入图片描述

    3.任务计划程序库(开机后不进入桌面,可执行)

    打开计算机,右键计算机,点击管理
    在这里插入图片描述

    找到任务计划程序库,右边右键 新建任务
    在这里插入图片描述

    配置程序启动信息,安全选项》选则 不管用户是否登录都要运行
    在这里插入图片描述

    配置触发器,看什么时候执行
    在这里插入图片描述
    点击新建,配置执行时间
    在这里插入图片描述
    exe文件时后台静默启动
    操作 》配置启动程序路径
    在这里插入图片描述

  • 相关阅读:
    kali 切换系统语言
    Open3D 点云区域生长分割算法
    [轻松学会shell编程]-5、计划任务
    vector迭代器失效问题
    微信公众号开发 weichat openai token api 自动回复 关键词回复微信回复 微信对话框
    Redis(8)五大数据类型——Hash(哈希)
    Django学习日志10
    Android Material Design之BottomAppBar(八)
    Java对象深拷贝 终极方案 deep clone an object
    numpy基础
  • 原文地址:https://blog.csdn.net/weixin_43151418/article/details/126244567