设置程序开机自启动的几种方法

PixPin_2026-04-11_16-16-06

PixPin_2026-04-11_16-27-34

PixPin_2026-04-11_16-35-00

PixPin_2026-04-11_17-01-45

命令 对应真实路径 描述
shell:startup C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 当前用户的启动文件夹,放置在这里的程序将在用户登录时自动启动。
shell:Common Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 所有用户共享的启动文件夹,放置在这里的程序将在任何用户登录时自动启动。
shell:desktop C:\Users\Administrator\Desktop 当前用户的桌面文件夹。
shell:documents C:\Users\Administrator\Documents 当前用户的文档文件夹。
shell:downloads C:\Users\Administrator\Downloads 当前用户的下载文件夹。
shell:pictures   当前用户的图片文件夹。
shell:music   当前用户的音乐文件夹。
shell:videos   当前用户的视频文件夹。
shell:programs   当前用户的开始菜单程序文件夹。
shell:Common Documents   所有用户共享的文档文件夹。
shell:Common Desktop   所有用户的桌面文件夹。
shell:run   打开“运行”对话框。
shell:controlpanel   打开控制面板。
shell:network   打开网络位置。
shell:system   打开系统文件夹。
shell:taskschd   打开任务计划程序。

 

命令 对应目录 说明
shell:startup %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup 当前用户的启动文件夹,放置在这里的程序将在用户登录时自动启动。
shell:Common Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 所有用户共享的启动文件夹,放置在这里的程序将在任何用户登录时自动启动。
shell:desktop %USERPROFILE%\Desktop 当前用户的桌面文件夹。
shell:documents %USERPROFILE%\Documents 当前用户的文档文件夹。
shell:downloads %USERPROFILE%\Downloads 当前用户的下载文件夹。
shell:pictures %USERPROFILE%\Pictures 当前用户的图片文件夹。
shell:music %USERPROFILE%\Music 当前用户的音乐文件夹。
shell:videos %USERPROFILE%\Videos 当前用户的视频文件夹。
shell:programs %APPDATA%\Microsoft\Windows\Start Menu\Programs 当前用户的开始菜单程序文件夹。
shell:Common Documents C:\ProgramData\Documents 所有用户共享的文档文件夹。
shell:Common Desktop C:\Users\Public\Desktop 所有用户的桌面文件夹。
shell:run N/A 打开“运行”对话框。
shell:controlpanel N/A 打开控制面板。
shell:network N/A 打开网络位置。
shell:system N/A 打开系统文件夹。
shell:taskschd N/A 打开任务计划程序。

设置程序开机自启动的几种方法:

方法一:(操作开机启动文件夹)

【Win + R】 打开【运行】,输入:PixPin_2026-04-11_17-01-45

shell:startup//用户自动启动的的目录

shell:Common Startup//系统自动启动的的目录

维度 shell:startup(当前用户) shell:Common Startup(公共启动)
路径 C:\Users\%USERNAME%\AppData\Roaming\... C:\ProgramData\Microsoft\Windows\...
用户 统所有用
通用户权 (User Level) 管理员权 (Admin Level)
 (用户意修)  (受系统)
 (微信、输)  (件)
shell:命令 对应路径
shell:startup C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
shell:Common Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

详细技术分析

路径与环境变量逻辑

  • shell:startup (当前用户启动)
    • 物理路径C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    • 逻辑解析:路径中包含 %USERNAME%(当前用户名)。Windows 在加载用户配置文件后,会专门扫描该用户目录下的这个文件夹。
    • 数据隔离:每个用户(如 Administrator, Guest, UserA)都有自己独立的 AppData 目录,互不干扰。
  • shell:Common Startup (公共启动)
    • 物理路径C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
    • 逻辑解析:路径指向 C:\ProgramData,这是一个隐藏的系统级目录,用于存放所有用户共享的应用数据。
    • 数据共享:无论谁登录这台电脑,系统都会扫描这个文件夹。

权限控制逻辑

这是两者最本质的区别,决定了谁能往里面放东西:
  • 当前用户 (shell:startup)
    • 权限:当前登录用户对该文件夹拥有完全控制权
    • 操作:你可以随意创建、删除、修改里面的快捷方式,无需弹窗请求管理员权限(UAC)。
    • 场景:普通软件安装时,默认通常选这里,因为它不需要打扰用户进行提权操作。
  • 公共启动 (shell:Common Startup)
    • 权限:该文件夹的所有者通常是 SYSTEM 或 Administrators 组。普通用户默认只有“读取”权限,没有“写入”权限。
    • 操作:如果你想往这里放一个快捷方式,Windows 会弹出 用户账户控制 对话框,要求你确认管理员权限。
    • 场景:只有安装程序(Installer)或管理员手动操作时才会用到这里。

启动加载逻辑

  • 加载顺序:通常在用户登录进入桌面环境后,Explorer.exe 会同时扫描这两个位置。
  • 执行身份
    • 放在 shell:startup 里的程序,以当前用户的身份运行。
    • 放在 shell:Common Startup 里的程序,虽然也是随用户登录启动,但它依然以当前登录的那个用户身份运行(除非程序内部调用了提权),但它会对每一个登录的用户生效。

🛠️ 实际应用场景对比

什么时候用 shell:startup?

  • 你下载了一个网易云音乐,希望每次你自己登录电脑时它自动打开,但不希望影响用这台电脑的其他人(比如你的家人)。
  • 你写了一个简单的 Python 脚本辅助自己的工作,只需要在你自己的账户下运行。

什么时候用 shell:Common Startup?

  • 你是公司的 IT 管理员,部署了一台公共电脑,希望无论谁登录,都必须先启动公司的 VPN 客户端或监控软件。
  • 安装企业级杀毒软件,需要确保系统中没有任何死角,所有账户登录后防护都必须到位。

  • shell:startup = 私有空间(我的电脑我做主,不需要管理员权限)。
  • shell:Common Startup = 公共空间(牵一发而动全身,必须管理员点头)。

一份关于 shell:startup 与 shell:Common Startup 的深度技术分析报告。
这两个路径虽然都用于管理 Windows 的开机自启动项,但在作用域(Scope)访问控制列表(ACL)以及权限继承上有着本质的区别。

📊 核心技术对比分析表

表格
 
分析维度 shell:startup(当前用户启动) shell:Common Startup(公共启动)
对应物理路径 C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
作用范围 单用户级。仅对当前登录的特定用户生效。 系统级。对登录该计算机的所有用户生效。
基础权限要求 标准用户权限。用户对自己目录拥有完全控制权。 管理员权限。写入该目录通常需要 UAC 提权。
安全性等级 较低。容易被当前用户下的恶意软件篡改或植入。 较高。受系统保护,普通权限的病毒难以写入。
典型用途 用户个性化软件(如:微信、输入法、网盘客户端)。 系统级服务、后台守护进程(如:杀毒软件、硬件驱动面板)。

🔍 深度解析:权限及关联嵌套权限关系

这是两者最本质的技术区别,涉及 Windows 的访问控制列表机制。

shell:startup (用户级) 的权限逻辑

  • 所有权:该文件夹归当前用户所有(例如 Administrator)。
  • 权限继承:继承自父文件夹 Roaming 或 Start Menu
  • ACL 设置
    • 用户:拥有完全控制权限。这意味着当前用户可以随意创建、删除、修改该文件夹内的快捷方式,无需弹出 UAC 提示框。
    • SYSTEM/管理员:通常也有完全控制权限,但在日常运行中,这是用户的“私有领地”。
  • 嵌套关系
    • 如果用户 A 登录,系统只扫描 C:\Users\A\...\Startup
    • 如果用户 B 登录,系统只扫描 C:\Users\B\...\Startup
    • 结论:数据是隔离的,互不干扰。

shell:Common Startup (公共级) 的权限逻辑

  • 所有权:该文件夹归 SYSTEM 或 Administrators 组所有。
  • 权限继承:继承自 C:\ProgramData
  • ACL 设置
    • 用户:通常只有读取和执行权限。
    • 管理员:拥有完全控制权限。
  • 写入逻辑(关键差异)
    • 当一个安装程序(Installer)试图将快捷方式放入 shell:Common Startup 时,由于标准用户没有写入权限,Windows 会触发用户账户控制弹窗,要求提升权限。
    • 嵌套关系:这是一个“汇聚点”。无论哪个用户登录,Windows 启动管理器都会去扫描这个公共目录。

⚖️ 安全性与攻击面分析

在网络安全和取证分析中,这两个路径是持久化攻击的常见目标:

针对 shell:startup 的攻击

  • 风险:如果一个恶意脚本获得了当前用户的权限(例如通过钓鱼邮件运行的 PowerShell 脚本),它可以直接向 shell:startup 写入恶意快捷方式。
  • 后果:下次该用户开机,恶意程序自动运行。
  • 防御:很难防御,因为这是用户目录,杀毒软件通常不会拦截用户对自己目录的写入操作。

针对 shell:Common Startup 的攻击

  • 风险:攻击者必须首先通过提权漏洞获取管理员权限,才能写入此目录。
  • 后果:这是“最高级别”的持久化。不仅当前用户开机运行,新建的任何用户、或者访客登录时,恶意程序都会运行。
  • 防御:Windows 的 UAC 机制是第一道防线。

🛠️ 实际应用建议

  • 如果你是开发者
    • 开发普通桌面应用(如记事本工具),请使用 shell:startup(当前用户),避免骚扰用户(不触发 UAC)。
    • 开发企业级管理软件或安全软件,请使用 shell:Common Startup,确保无论谁登录电脑,软件都在运行。
  • 如果你是系统管理员
    • 想要给全公司电脑部署一个开机脚本?通过组策略配置公共启动文件夹或直接操作 C:\ProgramData\... 路径。
  • 如果你在排查病毒
    • 务必检查这两个文件夹。很多顽固病毒会同时在两个地方留下后门,你需要删除 Common Startup 里的病毒文件时,记得右键选择“以管理员身份运行”文件资源管理器,否则可能无法删除。

一份关于 shell:startup 与 shell:Common Startup 的深度技术分析报告。
这两个命令虽然最终效果都是实现程序开机自启,但在 Windows 内部机制中,它们代表了完全不同的作用域权限层级安全边界

📊 核心技术对比概览表

表格
 
维度 shell:startup(当前用户启动) shell:Common Startup(公共启动)
对应物理路径 C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
作用域 用户级:仅对当前登录用户生效。 系统级:对所有登录该计算机的用户生效。
权限要求 标准用户权限:用户对自己目录拥有完全控制权。 管理员权限:写入该目录通常需要 UAC 提权。
安全性 较低:容易被当前用户环境下的恶意软件篡改。 较高:受系统完整性机制保护,难以被普通权限程序修改。
典型用途 用户个性化软件(如:微信、输入法、网盘)。 系统级服务、驱动助手(如:杀毒软件、显卡控制面板)。

🔍 深度解析:权限及关联嵌套权限关系

这是两者最本质的区别,涉及 Windows 的访问控制列表机制。

shell:startup (用户级) 的权限逻辑

  • 所有权:该文件夹归当前用户所有(例如 Administrator 或 UserA)。
  • 权限继承:继承自父文件夹 Roaming 或 Start Menu
  • ACL设置
    • 用户:拥有完全控制权限。这意味着当前用户可以随意创建、删除、修改该文件夹内的快捷方式,无需弹出 UAC 提示框。
    • SYSTEM/管理员:通常也有完全控制权限,但在日常运行中不干预。
  • 关联嵌套:如果用户配置文件损坏,或者管理员在更高层级(如 C:\Users)强制修改了 ACL 继承,可能会导致用户无法写入自己的启动项,但这种情况较少见。

shell:Common Startup (公共级) 的权限逻辑

  • 所有权:该文件夹归 SYSTEM 或 Administrators 组所有。
  • 权限继承:继承自 C:\ProgramData
  • ACL设置
    • SYSTEM/管理员组:拥有完全控制权限。
    • 普通用户/认证用户:通常只有读取 & 执行权限。
  • 关联嵌套权限关系
    • 写入阻断:当一个标准用户(Standard User)尝试向 Common Startup 写入文件时,NTFS 文件系统会拒绝访问。
    • UAC提权:只有当程序以“管理员身份运行”时,才能修改此目录。
    • 虚拟化:在某些旧应用兼容性场景下,如果程序试图写入此目录但无权限,Windows 可能会将其重定向到用户的虚拟存储区,导致“看似写入成功,实则未生效”的假象。

🛡️ 安全性与攻击面分析

从网络安全的角度来看,这两个路径是持久化攻击的重点目标:
  • shell:startup (提权跳板)
    • 由于普通用户拥有完全控制权,恶意软件一旦在当前用户权限下运行,可以轻易地将自己写入此目录。
    • 风险:用户每次登录都会自动触发恶意代码。
  • shell:Common Startup (系统级驻留)
    • 这是高价值目标。攻击者若能写入此目录,意味着攻击者已经获取了管理员权限
    • 风险:无论哪个用户登录(包括访客),恶意程序都会运行,极难清除。

  • 如果你是开发者:一般软件默认应使用 shell:startup(当前用户),除非是杀毒软件或硬件驱动等必须全局运行的程序,才申请写入 shell:Common Startup
  • 如果你是系统管理员:排查病毒时,既要检查当前用户的启动项,更要重点检查 Common Startup,因为后者往往隐藏着更深层的系统级威胁。

把要开机自启的【程序文件】或【快捷方式】复制到打开的窗口中即可。

方法二:(添加注册表)

在Win + R 【运行】中输入【regedit】,打开注册表。

打开路径(可以直接复制路径打开):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

在空白处【右键】>【新建】>【字符串值】。

双击【新值 #1】。

在打开的窗口中输入要开机自启动的【程序路径】即可。

启用或禁用启动项:

以上两种方法添加的启动项都可以启用或禁用:

Win10系统可在【任务管理器】>【启动】中操作。

Win7系统可在【msconfig】>【启动】中操作。

 

要设置程序在 Windows 开机时自动启动,可以按照以下步骤进行操作:

  1. 使用快捷键 Win + R 打开“运行”对话框,然后输入 "shell:startup",并点击 "确定" 打开启动文件夹。

  2. 在启动文件夹中,右键单击空白处,选择 "新建" -> "快捷方式"。

  3. 在弹出的快捷方式创建向导中,点击 "浏览" 按钮,找到你想要设置开机自启动的程序的可执行文件(通常是以 .exe 结尾的文件),选中该文件后点击 "下一步"。

  4. 输入一个描述性的名称,例如程序的名称,然后点击 "完成" 完成创建快捷方式。

  5. 关闭文件资源管理器窗口,然后重新启动计算机。

重新启动后,该程序应该会自动启动。

 

还有其他几种设置程序开机自启动的方法:

  1. 使用任务计划程序:

    • 打开“任务计划程序”(可以通过在开始菜单中搜索并打开)。
    • 在左侧导航栏中,选择“任务计划程序库”。
    • 在右侧窗口中,右键单击空白处,选择“创建基本任务”。
    • 根据向导的指引,设置任务的名称、描述和触发器(选择“开机时”),然后选择要运行的程序或脚本。
    • 完成设置后,重新启动计算机以检查任务是否成功添加并自动启动。
  2. 注册表编辑器:

    • 使用快捷键 Win + R 打开“运行”对话框,输入 "regedit" 并点击 "确定" 打开注册表编辑器。
    • 导航到以下注册表路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    • 右键单击右侧窗格中的空白处,选择“新建” -> “字符串值”。
    • 给该字符串值命名,并将其值设置为要启动的程序的完整路径。
    • 关闭注册表编辑器,并重新启动计算机以检查程序是否会自动启动。
  3. 组策略编辑器(仅适用于专业版、企业版和教育版):

    • 使用快捷键 Win + R 打开“运行”对话框,输入 "gpedit.msc" 并点击 "确定" 打开组策略编辑器。
    • 导航到以下路径:计算机配置 -> Windows 设置 -> 脚本(启动/关机)。
    • 双击“启动”或“关机”选项,然后选择“启用”。
    • 点击“添加”并指定要启动的程序的脚本路径。
    • 重新启动计算机以检查程序是否会自动启动。

 

  1. 使用系统配置工具:

    • 使用快捷键 Win + R 打开“运行”对话框,输入 "msconfig" 并点击 "确定" 打开系统配置工具。
    • 选择“启动”选项卡,然后勾选要启动的程序的复选框。
    • 点击“应用”和“确定”,然后重新启动计算机以检查程序是否会自动启动。

 

  1. 使用快速访问菜单:

    • 在任务栏上找到程序的快捷方式图标。
    • 右键单击该图标,并选择“属性”。
    • 在属性窗口中,选择“快速访问菜单”选项卡。
    • 勾选“在登录时打开此程序”选项。
    • 点击“应用”和“确定”,然后重新启动计算机以检查程序是否会自动启动。
  2. 使用启动文件夹:

    • 按下 Win + R 快捷键,打开“运行”对话框。
    • 输入 "shell:startup" 并点击 "确定" 打开启动文件夹。
    • 将要启动的程序的快捷方式拖放到启动文件夹中。
    • 重新启动计算机以检查程序是否会自动启动。
  3. 使用登录项目管理器:

    • 按下 Ctrl + Alt + Del 快捷键,选择“任务管理器”。
    • 在任务管理器中,选择“启动”选项卡。
    • 在启动项目列表中,找到要启动的程序,并右键单击它。
    • 选择“启用”选项。
    • 重新启动计算机以检查程序是否会自动启动。
  1. 使用命令行工具:

    • 打开命令提示符(按下 Win + R,输入 "cmd",然后点击 "确定")。
    • 输入 "shell:startup",然后按回车键打开启动文件夹。
    • 将要启动的程序的快捷方式复制到启动文件夹中。
    • 重新启动计算机以检查程序是否会自动启动。
  2. 使用启动服务:

    • 打开服务管理器(按下 Win + R,输入 "services.msc",然后点击 "确定")。
    • 在服务列表中找到要启动的程序相关的服务。
    • 右键单击该服务,选择“属性”。
    • 在属性窗口中,将启动类型设置为“自动”。
    • 点击“应用”和“确定”,然后重新启动计算机以检查程序是否会自动启动。
  3. 使用注册表(只适用于高级用户):

    • 打开注册表编辑器(按下 Win + R,输入 "regedit",然后点击 "确定")。
    • 导航到以下注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • 右键单击右侧窗格中的空白处,选择“新建” -> “字符串值”。
    • 给该字符串值命名,并将其值设置为要启动的程序的完整路径。
    • 关闭注册表编辑器,并重新启动计算机以检查程序是否会自动启动。
  1. 使用命令行工具:

    • 打开命令提示符或 PowerShell。
    • 输入 "wmic startup list full" 命令,以获取当前注册表中的所有开机自启动项的详细信息。
    • 检查输出,找出不需要的启动项。
    • 对于要禁用的启动项,可以使用 "wmic startup where name='启动项名称' call delete" 命令来删除该启动项。
  1. 检查注册表:

    • 按下 Win + R,输入 "regedit",然后点击 "确定" 打开注册表编辑器。
    • 导航到以下路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 和 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。
    • 在这些位置下,你可以看到注册表中的开机自启动项。
    • 右键单击要删除的启动项,并选择 "删除"。
  1. 使用组策略编辑器:使用组策略编辑器可以禁止或限制用户在登录时运行某些程序或脚本等。具体操作如下:

    • 按下 Win + R,输入 "gpedit.msc",然后点击 "确定" 打开组策略编辑器。
    • 导航到以下路径:计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项
    • 在右侧窗口中找到 "用户帐户控制: 不允许在用户登录时启动应用程序" 选项,并将其设置为 "已启用"。
    • 点击 "应用" 和 "确定",然后重新启动计算机以应用更改。
  1. 使用 PowerShell 脚本:你可以编写 PowerShell 脚本来列出、禁用或删除开机启动项。例如,以下命令可列出当前用户的所有开机启动项: Get-CimInstance -Class Win32_StartupCommand | Select-Object Name, Command, Location

 

posted @ 2024-01-02 08:53  suv789  阅读(5977)  评论(0)    收藏  举报