VBScript Win32_StartupCommand 类
最后修改于 2025 年 4 月 9 日
VBScript 中的 Win32_StartupCommand
类是 Windows Management Instrumentation (WMI) 的一部分。它提供了有关系统启动或用户登录时自动运行的程序的信息。此类对于系统管理和安全审计非常有用。
Win32_StartupCommand
可揭示来自注册表和启动文件夹等各种位置的启动项。它有助于识别潜在的恶意自动运行程序。本教程通过实际示例涵盖了该类,以演示其用法。
Win32_StartupCommand 类概述
Win32_StartupCommand
类包含描述每个启动命令的属性。关键属性包括 Command
、Location
、Name
和 User
。这些属性揭示了运行的内容、配置位置以及针对哪个用户。
该类涵盖了来自多个位置的启动项:注册表运行键、启动文件夹和计划任务。它提供了所有自动运行程序的统一视图。了解此类有助于管理系统启动行为。
列出所有启动命令
此基本示例演示了如何查询系统上的所有启动命令。它连接到 WMI,执行查询并显示结果。将显示每个启动项的名称、命令和位置。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("SELECT * FROM Win32_StartupCommand") For Each objStartup In colStartupCommands WScript.Echo "Name: " & objStartup.Name WScript.Echo "Command: " & objStartup.Command WScript.Echo "Location: " & objStartup.Location WScript.Echo "User: " & objStartup.User WScript.Echo "--------------------------------" Next
脚本使用 GetObject
和适当的命名空间连接到 WMI。它查询 Win32_StartupCommand
的所有实例。循环遍历结果,显示每个条目的关键属性。
按位置过滤启动命令
此示例显示如何按位置过滤启动命令。它仅查询来自特定启动位置的条目。WQL 查询中的 WHERE 子句支持此过滤功能。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("SELECT * FROM Win32_StartupCommand WHERE Location LIKE '%Startup%'") WScript.Echo "Startup Folder Entries:" WScript.Echo "=======================" For Each objStartup In colStartupCommands WScript.Echo "Name: " & objStartup.Name WScript.Echo "Path: " & objStartup.Command WScript.Echo "--------------------------------" Next
脚本过滤位置中包含“Startup”的条目。这会将目标指向从用户启动文件夹启动的程序。LIKE 运算符允许在 WQL 查询中进行模式匹配。仅处理匹配的条目。
查找特定用户的启动命令
此示例演示如何查询特定用户帐户的启动命令。它使用 User 属性过滤结果。这有助于识别用户特定的自动运行程序。
targetUser = "DOMAIN\username" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("SELECT * FROM Win32_StartupCommand WHERE User = '" & targetUser & "'") WScript.Echo "Startup commands for user " & targetUser & ":" WScript.Echo "====================================" For Each objStartup In colStartupCommands WScript.Echo "Name: " & objStartup.Name WScript.Echo "Location: " & objStartup.Location WScript.Echo "Command: " & objStartup.Command WScript.Echo "--------------------------------" Next
脚本定义目标用户并将其包含在 WQL 查询中。仅返回为该用户配置的启动项。请将“DOMAIN\username”替换为实际要调查的用户。这对于用户配置文件管理很有用。
检查特定的启动程序
此示例检查是否已配置特定程序在启动时运行。它搜索匹配程序名称模式的条目。这有助于检测可能不需要的自动运行程序。
programName = "malware.exe" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("SELECT * FROM Win32_StartupCommand WHERE Command LIKE '%" & programName & "%'") If colStartupCommands.Count > 0 Then WScript.Echo "Found " & colStartupCommands.Count & " startup entries for " & programName For Each objStartup In colStartupCommands WScript.Echo "Location: " & objStartup.Location WScript.Echo "User: " & objStartup.User Next Else WScript.Echo "No startup entries found for " & programName End If
脚本搜索任何包含指定程序名称的启动命令。带有通配符 (%) 的 LIKE 运算符支持部分匹配。结果将指示程序是否配置为自动运行以及在何处运行。这对于安全审计很有用。
将启动命令导出到 CSV 文件
此高级示例将所有启动命令导出到 CSV 文件。它创建一个包含所有相关属性的结构化报告。脚本演示了文件处理与 WMI 查询的结合。
outputFile = "C:\temp\startup_commands.csv" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile(outputFile, True) objFile.WriteLine "Name,Command,Location,User" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colStartupCommands = objWMIService.ExecQuery _ ("SELECT * FROM Win32_StartupCommand") For Each objStartup In colStartupCommands line = """" & objStartup.Name & """," line = line & """" & objStartup.Command & """," line = line & """" & objStartup.Location & """," line = line & """" & objStartup.User & """" objFile.WriteLine line Next objFile.Close WScript.Echo "Startup commands exported to " & outputFile
脚本创建一个 CSV 文件并写入标题行。然后,它查询所有启动命令,并将每个命令作为格式正确的 CSV 行写入。引号用于处理数据字段中的逗号。结果是所有启动项的可电子表格报告。
来源
在本文中,我们探讨了 VBScript 中的 Win32_StartupCommand
类,涵盖了其用法和实际应用。从基本列表到高级过滤和报告,这些示例演示了强大的启动程序管理。通过这些知识,您可以更好地控制和审计系统的自动运行行为。