Windows 中的位置、通用启动和启动是什么?

位置(Location):在 Windows 操作系统中,位置通常指的是路径或文件夹的位置。例如,C:\Program Files 是一个位置,表示系统安装的程序文件的默认目录。

通用启动(Common Startup):通用启动是指所有用户在登录时都会执行的程序或快捷方式。这些程序或快捷方式位于操作系统的共享启动文件夹中,而不是个人用户的启动文件夹中。在 Windows 系统中,通用启动文件夹的路径通常是 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup。

启动(Startup):启动是指在每个用户登录时自动启动的程序或快捷方式。每个用户都有自己的个人启动文件夹,其中包含他们希望在登录时自动启动的应用程序或快捷方式。在 Windows 系统中,个人用户的启动文件夹通常位于 C:\Users<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup。

所以,区别在于通用启动是对所有用户有效的启动项,而启动则是针对每个用户个人的启动项。

wmic startup get Caption, Command, User要获取 Windows 系统中的启动项以及相应的命令和用户信息,可以通过运行以下命令来使用 Windows Management Instrumentation Command-line (WMIC) 工具:

wmic startup get Caption, Command, User运行此命令将返回一个表格,其中包含启动项的标题(Caption)、命令(Command)和用户(User)信息。每一行表示一个启动项,其中“Caption”列显示启动项的名称,如程序或服务的名称;“Command”列显示启动项的命令行或路径;“User”列显示与启动项关联的用户。

请注意,您需要以管理员身份运行命令提示符或 PowerShell 来执行该命令。

ms-settings:startupapps"ms-settings:startupapps" 是一个 Windows 10 的 URI(统一资源标识符),用于直接打开系统设置中的“启动”应用程序页面。通过访问该 URI,您可以方便地管理在系统启动时自动运行的应用程序。

要打开该页面,您可以按照以下步骤操作:

打开运行对话框:按下 Win + R 键,或者在开始菜单中搜索并运行 "运行"。在运行对话框中,输入 "ms-settings:startupapps"(不包括引号),然后按下 Enter 键。这将直接打开系统设置中的“启动”应用程序页面,其中显示了在系统启动时自动运行的应用程序列表。在该页面上,您可以通过切换应用程序的开关来启用或禁用它们在系统启动时自动运行。您还可以查看每个应用程序的启动类型、状态以及其他相关信息。

请注意,该 URI 只适用于 Windows 10 操作系统,并且需要最新版本的 Windows 10 来支持该功能。如果您使用的是其他 Windows 版本,或者您的系统没有安装最新的更新,可能无法通过该 URI 打开对应的页面。

msinfo32-软件环境-启动程序

要查看 Windows 系统中的启动程序信息,您可以使用 "msinfo32" 工具,并按照以下步骤操作:

打开运行对话框:按下 Win + R 键,或者在开始菜单中搜索并运行 "运行"。在运行对话框中,输入 "msinfo32"(不包括引号),然后按下 Enter 键。这将打开系统信息窗口,其中包含有关计算机硬件和软件的详细信息。在左侧的导航窗格中,展开 "软件环境" 节点,并选择 "启动程序"。在右侧的窗格中,您将看到列出的所有启动程序及其相关信息,如名称、命令、位置等。从这个列表中,您可以查看当前系统中设置为在启动时自动运行的所有程序。您还可以对启动程序进行排序、导出信息或查找特定程序。

请注意,以管理员身份运行 "msinfo32" 可能需要对系统进行授权,因此确保您具有适当的权限来访问该信息。

系统配置工具(System Configuration):

打开运行对话框:按下 Win + R 键。在运行对话框中,输入 "msconfig"(不包括引号),然后按下 Enter 键。系统配置工具窗口将打开。切换到“启动”选项卡。在该选项卡上,您将看到列出的所有启动项以及它们的状态(启用或禁用)。注册表编辑器(Registry Editor):

打开运行对话框:按下 Win + R 键。在运行对话框中,输入 "regedit"(不包括引号),然后按下 Enter 键。注册表编辑器窗口将打开。导航到以下注册表路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (仅查看当前用户的启动项) 或 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run (查看所有用户的启动项)在右侧窗格中,您将看到注册表中列出的所有启动项及其对应的值。

PowerShell 中查询所有 Windows 启动项(即启动时自动运行的程序),我们可以利用 Windows 注册表和其他工具来获取这些信息。启动项通常存储在几个注册表路径中,还可以通过任务计划程序来管理。

下面是一个完整的 PowerShell 脚本,该脚本可以帮助你查询所有 Windows 启动项,包括从注册表、任务计划和启动文件夹等位置获取的启动项。

1. PowerShell 查询 Windows 启动项

powershell

# 获取所有注册表中的启动项

$startupRegistryPaths = @(

"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run", # 当前用户的启动项

"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run", # 所有用户的启动项(需要管理员权限)

"HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce", # 启动一次的项

"HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce" # 当前用户的启动一次项

)

# 显示启动项的函数

function Show-StartupItems {

param (

[string[]]$paths

)

foreach ($path in $paths) {

Write-Host "`n查询注册表路径: $path"

try {

# 获取启动项信息

$startupItems = Get-ItemProperty -Path $path

$startupItems.PSObject.Properties | ForEach-Object {

Write-Host "$($_.Name) => $($_.Value)"

}

} catch {

Write-Host "访问路径 $path 时出现错误,可能需要管理员权限。"

}

}

}

# 查询并显示注册表中的启动项

Show-StartupItems -paths $startupRegistryPaths

# 获取用户的启动文件夹

$startupFolder = [System.Environment]::GetFolderPath("Startup")

Write-Host "`n查询启动文件夹: $startupFolder"

# 获取启动文件夹中的所有文件

$startupFiles = Get-ChildItem -Path $startupFolder

$startupFiles | ForEach-Object {

Write-Host "$($_.Name) => $($_.FullName)"

}

# 获取任务计划中的启动项(任务计划程序)

Write-Host "`n查询任务计划中的启动项..."

$scheduledTasks = Get-ScheduledTask | Where-Object { $_.Actions -match 'start' }

$scheduledTasks | ForEach-Object {

Write-Host "$($_.TaskName) => $($_.State) => $($_.Actions)"

}

2. 脚本解释

查询注册表中的启动项:

启动项通常位于以下注册表路径:

HKCU:\Software\Microsoft\Windows\CurrentVersion\Run:当前用户的启动项

HKLM:\Software\Microsoft\Windows\CurrentVersion\Run:所有用户的启动项(需要管理员权限)

HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce:当前用户的“一次性”启动项

HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce:所有用户的“一次性”启动项(需要管理员权限)

Get-ItemProperty 用来获取这些路径下的启动项,并列出其名称和值。

查询启动文件夹: 启动文件夹通常位于:

当前用户的启动文件夹:[System.Environment]::GetFolderPath("Startup") 使用 Get-ChildItem 获取文件夹中的文件,显示在启动时自动运行的程序。

查询任务计划中的启动项: 有些程序可能通过任务计划程序设置为启动。使用 Get-ScheduledTask 获取系统中的计划任务,并筛选出匹配启动条件的任务。

3. 执行脚本

将上述 PowerShell 脚本保存为 .ps1 文件(例如 Get-StartupItems.ps1)。

使用管理员权限打开 PowerShell。

如果执行策略未设置为允许脚本执行,可以运行以下命令来启用脚本:

powershell

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

运行脚本:

powershell

.\Get-StartupItems.ps1

4. 结果展示

执行脚本后,你会看到来自不同来源的启动项,例如:

注册表中的启动项:显示每个启动项的名称和值,表示在 Windows 启动时会运行的程序。

启动文件夹中的程序:列出放在启动文件夹中的程序。

任务计划中的启动项:列出所有由任务计划程序管理的启动项。

5. 管理员权限

HKLM(本地计算机)的注册表项需要管理员权限来访问,因此在运行脚本时可能需要使用管理员权限。

6. 补充说明

启动项查询主要依赖于注册表、启动文件夹和任务计划。如果某些程序没有显示在这些位置,它们可能会使用其他方式进行自动启动(例如通过服务、应用商店应用等)。

通过这个 PowerShell 脚本,你可以全面了解和管理 Windows 启动项,帮助你监控哪些程序会随系统启动而运行。

在 Windows 系统中,除了通过 注册表、启动文件夹 和 任务计划程序 配置的启动项外,实际的启动项来源还包括以下几种补充的方式:

1. 服务(Services)启动项

Windows 系统会在启动时加载一些服务,这些服务通常不是通过用户界面启动的,而是由系统或应用程序自动注册。服务通常通过 Windows 服务管理器 (Services.msc) 进行管理。

服务启动项:这些是操作系统或第三方应用注册的服务,会在系统启动时或某些条件满足时自动启动。服务可以设置为“自动”、“手动”或“禁用”。

查看服务启动项:

powershell

Get-Service | Where-Object { $_.StartType -eq "Automatic" }

这个命令会列出所有设置为自动启动的服务。许多系统级服务(如 Windows Update、Windows Defender)在启动时会自动启动。

查看正在运行的服务:

powershell

Get-Service | Where-Object { $_.Status -eq "Running" }

这会显示当前正在运行的服务。

2. Windows 任务计划程序(Task Scheduler)

除了启动文件夹和注册表之外,Windows 任务计划程序也能自动启动程序和脚本。任务计划程序允许更复杂的启动条件,如按时间、事件、系统事件等触发。

通过任务计划启动项: 任务计划程序可以设置程序在系统启动时执行,或在特定时间、事件发生时执行。你可以通过 PowerShell 或任务计划程序的图形界面管理这些任务。

查看所有计划任务:

powershell

Get-ScheduledTask

该命令将列出系统中所有的计划任务,可以进一步筛选出启动时触发的任务。

查看某个任务的详细信息:

powershell

Get-ScheduledTask | Where-Object { $_.TaskName -eq "TaskName" }

3. 组策略(Group Policy)

组策略是 Windows 中的另一个重要工具,可以配置一些启动时的行为。管理员可以通过组策略设置计算机启动时执行特定的脚本或程序。

启动脚本:可以通过组策略的“计算机配置”或“用户配置”中的“Windows 设置”部分设置启动脚本。例如,在 计算机配置 > Windows 设置 > 脚本(启动/关闭) 下配置启动时执行的批处理文件或 PowerShell 脚本。

查看组策略启动项: 你可以使用 gpedit.msc 或 rsop.msc 查看和编辑组策略设置,特别是启动脚本部分。

4. Windows 任务栏、开始菜单及快捷方式

除了常见的启动文件夹和注册表位置外,一些程序会在 任务栏 或 开始菜单 中创建快捷方式,通常这些快捷方式会被配置为自动启动。

查看任务栏快捷方式: 这些快捷方式通常存储在 C:\Users\\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch 或 C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录下。

查看开始菜单中的自动启动项: 一些程序也可以被设置为在登录时自动显示在开始菜单中的“启动”项上。这些项通常存放在启动文件夹中,或由注册表配置。

5. Windows 注册表 - 更深层次的启动项

除了常见的启动项路径,Windows 注册表还包含了其他一些位置,其中可能有一些影响系统启动行为的配置。

其他注册表路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run(适用于 32 位应用在 64 位系统上的安装)

这些位置可能会被用来注册自启动程序,并且通常在安装某些应用程序时会自动添加。

6. Shell 启动项

Windows 使用 shell(资源管理器)来启动系统上的应用程序,某些程序可能会利用 shell 来注册启动项。例如,利用 Windows 注册表的 Explorer 键(HKEY_CLASSES_ROOT\exefile\shell\open\command)来配置默认的执行命令。

7. 安全启动项(Antivirus or Security Software)

安全软件和防病毒软件通常会在系统启动时加载,以确保系统的安全性。它们的启动项可能不容易通过普通的注册表或任务计划工具找到,通常需要从特定的服务或配置文件中查找。

你可以通过查看防病毒软件的日志或配置文件,或者使用 PowerShell 来检查它们是否在启动时运行:

powershell

Get-Process | Where-Object { $_.Name -match "antivirus|security" }

8. UAC(用户账户控制)相关启动项

UAC 在某些情况下也会影响启动项的管理,特别是某些程序需要高权限才能启动时。虽然 UAC 本身不会直接启动程序,但它会影响那些被标记为需要管理员权限的启动项。这些项通常通过服务、计划任务或指定的程序以提升权限的方式执行。

Windows 启动项不仅包括常见的注册表、任务计划程序和启动文件夹,还可以通过多种方式管理。需要考虑以下几种补充方式来全面检查启动项:

服务启动项:通过服务管理器(services.msc)管理。

任务计划程序:通过任务计划程序创建的启动任务。

组策略:由系统管理员配置的启动脚本和程序。

快捷方式:任务栏、开始菜单的快捷方式。

注册表其他位置:除了常见的 Run 键,还有 Policies 和 RunOnce 等位置。

Shell 启动项:与资源管理器和系统执行相关的启动项。

安全软件和防病毒软件的启动项。

如果你需要全面检查系统中的启动项,可以通过 PowerShell 脚本遍历所有这些位置,确保你获取到每个潜在的启动项来源。