ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

浅谈开机启动_windows

2021-01-26 09:01:03  阅读:239  来源: 互联网

标签:注册 Run 浅谈 windows HKEY RunOnce HKLM 开机 Microsoft


本文主要讲解系统中哪些常用位置可以让你的应用程序开机自启以及解释它们之间的关系。


一、有哪些常用位置可以做到让应用开机启动呢?

  • 当前用户专有的启动文件夹  

    %AppData%\Microsoft\Windows\Start Menu\Programs
  • 所有用户有效的启动文件夹

    %ProgramData%\Microsoft\Windows\Start Menu\Programs
  • Userinit注册键

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
    
    
    通常该注册表下面有一个userinit.exe,但这个键值是允许用逗号来分隔多个程序的,比如 userinit.exe,Crius.exe(举例)
  • Explorer\Run注册键

    
    
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    
    
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  • RunServicesOnce注册键

    
    
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
     
    RunServicesOnce注册键是用来启动服务的,启动时间是在用户登录之前,而且是先于其它通过注册键启动的程序。
  • RunServices注册键

    
    
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
    
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
     
    RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,启动时间也是在用户登录之前。
  • RunOnce注册键

    
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce
    
    
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    
    
    HKEY_LOCAL_MACHINE下面的RunOnce注册键会在用户登录之后立即运行程序,运行的时机是在其它Run键指定的程序之前。
    HKEY_CURRENT_USER则会启动比较慢,它会在操作系统处理其他Run键以及“启动”文件夹的内容之后运行。
  • Run注册键

    
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
     
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
     
    Run是自动运行程序最常用的注册表。
    会先执行HKEY_LOCAL_MACHINE下的Run注册键内容
    再执行HKEY_CURRENT_USER下的Run注册键内容
    但两者都是在处理“启动文件夹”之前
    
    

二、它们的执行顺序呢?

        很明显,RunServicesOnce与RunService肯定是最快的,因为他们在用户还未登录之前就已经开始异步调用其内容了。

        而其它位置都是从用户登录后才开始执行。所以我们忽略掉上面两个Services的自启键,只讲启动文件夹、userinit、Explorer\Run、RunOnce、Run。

  • 经过验证,它们的启动顺序如下:

    缩写:
    HKLM:HKEY_LOCAL_MACHINE
    HKCU:HKEY_CURRENT_USER
     
    Userinit注册键 > HKLM_RunOnce注册键 > HKLM_Explorer\Run注册键 > HKLM_Run注册键 > HKCU_Explorer\Run注册键 > HKCU_Run注册键
    > 所有用户有效的启动文件夹 > 当前用户专有的启动文件夹 > HKCU_RunOnce注册键

三、需要注意什么呢?

  • 启动的应用是否需要管理员权限,如果需要管理员权限,并不是每个自启的注册表位置都能启动,请查阅下表:

     

     Winlogon\Userinit

    HKLM_RunOnce

    HKLM_Run

    HKLM_Explorer\Run

    WOW6432Node_HKLM_RunOnce

    WOW6432Node_HKLM_Run

    HKCU_Explorer\Run

    HKCU_Run

    HKCU_RunOnce

    所有用户有效的启动文件夹

    当前用户专有的启动文件夹

    管理员应用 N Y N N Y Y N N Y N N
    非管理员应用 Y Y Y Y Y Y Y Y Y Y Y
  • HKLM_RunOnce是一个比较特殊的注册表,由它起的应用都是管理员权限的,持有特权

    1. HKLM_RunOnce注册键中的内容是由runonce.exe调起来的,它的级别是管理员级别的;

    2. 当你把开机启动项写到HKLM_RunOnce注册键中时,启动的进程都是管理员权限的;

    3. 在HKLM_RunOnce注册键中,多个项不可以同时运行起来,必须等待一个进程结束后,另外一个进程方可运行起来;

    4. 在所有进程结束前,不能登录到桌面(如果你是后台程序除外);

    • 当你启动的应用需要管理员权限时,HKCU下的自启注册键、HKLM_Run以及HKLM_Explorer\Run都不能自启
    • HKCU_RunOnce比较特殊,如果你的账户拥有管理员权限,就能启动需要管理员权限的应用,并且起起来的应用都是持有特权的
    • Remember:RunOnce在执行完毕之后注册表的键值就会被删掉了。

四、如何将应用执行路径写到Userinit中呢?

        请使用一下脚本,在执行脚本的时候,需要传入参数,也就是你exe的执行路径:

        ExecWait '"$INSTDIR\SupportFiles\AddCriusAutoRunPath.bat" "$INSTDIR\${PRODUCT_NAME}_${PRODUCT_VERSION}\${PATH_PRODUCT_EXE}"'

标签:注册,Run,浅谈,windows,HKEY,RunOnce,HKLM,开机,Microsoft
来源: https://www.cnblogs.com/gd-luojialin/p/14328564.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有