• Windows: 在系统启动时运行程序、定时计划任务、定时关机


    lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减。

    1. Windows任务计划(task scheduler)

    用户可以按以下步骤进行操作,建立一个任务计划:

    • 以管理员权限新建一个任务计划
    • 在“任务”选项卡中输入待执行的命令,去掉“仅在登录后运行”的选项。该命令将以建立这个计划任务的用户的权限运行
    • 在任务属性的“计划”选项卡-“计划任务”中选择“在登录时
    • 清除“设置”选项卡中的所有选项
    • 按“确定”保存,如果提示输入密码则输入用户密码

    如果要建立定时关机任务,请确保用户能够运行at命令,即需要管理员权限。在“任务”选项卡中输入以下命令:

    at 16:30 shutdown -c "System will be halted, save your works!" -s -f -t 500
    

    at命令和shutdown将以SYSTEM权限执行。

    • 优点:该方法无需其他工具软件,依靠Windows自身工具即可实现强大的定时功能。
    • 缺点:该命令依赖于可用的管理员账户及Task Scheduler服务;如果该管理员账户被禁用或者Task Scheduler服务被禁用或启动失败,则任务将无法运行。

    2. 修改注册表

    还可以通过修改注册表HKLMSoftwareMicrosoftWindowsCurrentVersionRunServices(Once)实现在系统启动时(而非用户登录时)启动程序。有关其他和自动运行相关的注册表项请参考下表:

    HKCUSoftwareMicrosoftWindowsCurrentVersionRun
    当前用户登录系统时运行程序
    HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce
    当前用户下次登录时运行程序,并自动移除该注册表项
    HKLMSoftwareMicrosoftWindowsCurrentVersionRun
    (所有)用户登录系统时运行程序
    HKLMSoftwareMicrosoftWindowsCurrentVersionRunOnce
    (所有)用户登录系统时运行程序
    HKLMSoftwareMicrosoftWindowsCurrentVersionRunServices
    系统启动时运行标准的NT服务或后台进程,如IIS服务
    HKLMSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
    系统下次启动时运行标准的NT服务或后台进程,并自动移除该注册表项
    • 优点:程序直接以SYSTEM权限运行;可以同时支持应用程序和系统服务;无需额外工具
    • 缺点:依赖于系统版本,不同的Windows操作系统对此有不同限制或实现方式不同

    3. nssm实用程序

    nssm实用程序可以让待运行的程序以Windows服务方式加载,这样,每次系统启动时就会通过启动服务来加载程序。nssm是开源软件,普通用户可以不必担心授权问题,公司或组织也可以以非商业用途的目的使用。接下来,我们首先获得nssm实用程序:

    • 访问http://nssm.cc/,下载最新版本的nssm实用程序
    • 解压nssm,将nssm-2.14win32 ssm.exe复制到%windir%system32目录下
    • 打开“命令提示符”窗口,输入nssm查看帮助:
    NSSM: The non-sucking service manager
    Version 2.14, 2012-05-24
    Usage: nssm <option> [args]
    
    To show service installation GUI:
    
            nssm install [<servicename>]
    
    To install a service without confirmation:
    
            nssm install <servicename> <app> [<args>]
    
    To show service removal GUI:
    
            nssm remove [<servicename>]
    
    To remove a service without confirmation:
    
            nssm remove <servicename> confirm
    

    然后新建一个脚本,如:

    @echo off
    at /delete /yes
    at 16:30 shutdown -s -f -t 500
    pause
    

    保存为D:servicesload.bat,将该脚本安装为服务:

    nssm install loadService D:servicesload.bat
    
    • 优点:可以将非标准的Windows服务、脚本、应用程序包装成标准的Windows服务;开源软件;对个版本Windows均支持
    • 缺点:需要安装、配置,需一定时间上手

    4. FireDaemon解决方案

    • 优点:FireDaemon是一个企业级的专业解决方案,可以将EXE, DLL, Perl, Python, Java, Batch, Powershell, Ruby或其他应用程序转换为Windows服务;可通过浏览器访问FireDaemon;可对CPU及内存进行实时监视;…
    • 缺点:该软件需要付费购买授权(目前每个授权售价$49),适合企业

    5. sc命令

    sc命令是Windows原生的服务控制命令,通过它可以方便地添加、删除标准的Windows服务程序:

    # 添加服务
    sc create ServiceName binpath= "D:servicesxxx.exe"
    # 移除服务
    sc delete ServiceName
    

    /!请注意:

    • binpath参数后面必须有一个空格
    • 添加完服务后,需要自行配置一下,如将启动类型设置为“自动”
    • 用户可以通过services.msc查看、管理已注册的服务

    优缺点:

    • 优点:Windows原生命令;功能较多
    • 缺点:要求被加载的应用程序是标准的Windows服务;普通cmd脚本会报错;语法复杂不易上手;新增服务后仍需手动配置;

    本文出自 Lesca技术宅,转载时请注明出处及相应链接。

    本文永久链接: http://lesca.me/archives/start-program-on-windows-startup.html

  • 相关阅读:
    到底有多少种智能指针(smart pointer)
    QSettings提供了非常方便的注册表读写
    阿里腾讯亿元级投资版图:阿里爱买超市,腾讯娱乐至上(恐怖)
    gcc安装教程(学习Linux编程只需安装cygwin)
    苹果抛弃的芯片公司Imagination被中资49亿溢价收购
    NET Core2
    HelloWorld RabbitMQ
    redis 集群
    kafka
    Impala简介PB级大数据实时查询分析引擎
  • 原文地址:https://www.cnblogs.com/wang1204/p/6617509.html
Copyright © 2020-2023  润新知