当前位置: 首页 > news >正文

go采集注册表

package mainimport ("fmt""golang.org/x/sys/windows/registry""log""os""strconv""strings"
)func USBSTOR_Enum() {// 打开注册表键keyPath := `SYSTEM\CurrentControlSet\Services\USBSTOR\Enum`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.QUERY_VALUE)if err != nil {log.Fatalf("无法打开注册表键 %s: %v", keyPath, err)}defer k.Close()// 获取 U 盘数量count, _, err := k.GetIntegerValue("Count")if err != nil {log.Fatalf("无法获取 U 盘数量: %v", err)}if count < 1 {fmt.Println("没有检测到 U 盘!")os.Exit(0)}// 遍历每个 U 盘的信息fmt.Printf("\n检测到 %d 个 U 盘,按插入顺序输出信息:\n\n", count)for i := 0; i < int(count); i++ {valueName := strconv.Itoa(i)info, _, err := k.GetStringValue(valueName)if err != nil {log.Printf("无法获取键值 %s 的信息: %v", valueName, err)continue}// 提取 SN、VID 和 PIDparts := strings.Split(info, "\\")if len(parts) < 3 {log.Printf("无法解析设备信息: %s", info)continue}sn := parts[2]pvid := parts[1]vid := strings.Split(strings.Split(pvid, "&")[0], "_")[1]pid := strings.Split(strings.Split(pvid, "&")[1], "_")[1]// 打印信息fmt.Printf("U 盘 %d:\n", i+1)fmt.Printf("  SN 码: %s\n", sn)fmt.Printf("  VID:   %s\n", vid)fmt.Printf("  PID:   %s\n\n", pid)}
}// 采集计算机名称
func getComputerName() {keyPath := `SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.QUERY_VALUE)if err != nil {log.Printf("无法获取计算机名称: %v", err)return}defer k.Close()name, _, err := k.GetStringValue("ComputerName")if err != nil {log.Printf("无法读取 ComputerName 值: %v", err)return}fmt.Printf("计算机名称: %s\n", name)
}// 采集已安装软件信息
func getInstalledSoftware() {keyPath := `SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.ENUMERATE_SUB_KEYS)if err != nil {log.Printf("无法打开已安装软件注册表路径: %v", err)return}defer k.Close()subKeys, err := k.ReadSubKeyNames(-1)if err != nil {log.Printf("无法读取子键名称: %v", err)return}fmt.Println("已安装的软件列表:")for _, subKey := range subKeys {subKeyPath := keyPath + `\` + subKeysubK, err := registry.OpenKey(registry.LOCAL_MACHINE, subKeyPath, registry.QUERY_VALUE)if err != nil {continue}name, _, _ := subK.GetStringValue("DisplayName")version, _, _ := subK.GetStringValue("DisplayVersion")if name != "" {fmt.Printf("  软件名称: %s, 版本: %s\n", name, version)}subK.Close()}
}// 采集 USB 设备信息
func getUSBDevices() {keyPath := `SYSTEM\CurrentControlSet\Enum\USB`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.ENUMERATE_SUB_KEYS)if err != nil {log.Printf("无法打开 USB 设备注册表路径: %v", err)return}defer k.Close()subKeys, err := k.ReadSubKeyNames(-1)if err != nil {log.Printf("无法读取 USB 设备子键: %v", err)return}fmt.Println("USB 设备信息:")for _, subKey := range subKeys {subKeyPath := keyPath + `\` + subKeydeviceK, err := registry.OpenKey(registry.LOCAL_MACHINE, subKeyPath, registry.ENUMERATE_SUB_KEYS)if err != nil {continue}deviceSubKeys, _ := deviceK.ReadSubKeyNames(-1)for _, deviceSubKey := range deviceSubKeys {deviceInfoPath := subKeyPath + `\` + deviceSubKeyinfoK, err := registry.OpenKey(registry.LOCAL_MACHINE, deviceInfoPath, registry.QUERY_VALUE)if err != nil {continue}deviceDesc, _, _ := infoK.GetStringValue("DeviceDesc")friendlyName, _, _ := infoK.GetStringValue("FriendlyName")if friendlyName == "" {friendlyName = deviceDesc}if friendlyName != "" {fmt.Printf("  设备名称: %s\n", friendlyName)}infoK.Close()}deviceK.Close()}
}// 采集网络信息
func getNetworkInfo() {keyPath := `SYSTEM\CurrentControlSet\Services\Tcpip\Parameters`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.QUERY_VALUE)if err != nil {log.Printf("无法获取网络信息: %v", err)return}defer k.Close()hostName, _, _ := k.GetStringValue("Hostname")domain, _, _ := k.GetStringValue("Domain")fmt.Printf("网络信息:\n  主机名: %s\n  域名: %s\n", hostName, domain)
}// 采集硬件信息
func getHardwareInfo() {keyPath := `HARDWARE\DESCRIPTION\System`k, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.QUERY_VALUE)if err != nil {log.Printf("无法获取硬件信息: %v", err)return}defer k.Close()systemBiosDate, _, _ := k.GetStringValue("SystemBiosDate")systemBiosVersion, _, _ := k.GetStringValue("SystemBiosVersion")fmt.Printf("硬件信息:\n  BIOS 日期: %s\n  BIOS 版本: %s\n", systemBiosDate, systemBiosVersion)
}// 主函数:逐一采集信息
func main() {fmt.Println("正在采集系统信息...\n")// 采集各类信息getComputerName()getInstalledSoftware()getUSBDevices()getNetworkInfo()getHardwareInfo()USBSTOR_Enum()fmt.Println("\n信息采集完成。")
}

Windows 注册表是一个分层的配置数据库,存储了系统配置、用户偏好、设备信息等数据。以下是一些常见的注册表路径和对应的信息类别,供你参考和扩展:

1. 系统信息

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

    • 描述: 包含系统配置相关的信息。
    • 示例:
      • ComputerName\ActiveComputerName: 当前计算机名称。
      • TimeZoneInformation: 系统时区信息。
  • 路径: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System

    • 描述: 存储硬件信息。
    • 示例:
      • SystemBiosDate: BIOS 日期。
      • SystemBiosVersion: BIOS 版本信息。

Windows 注册表是一个分层的配置数据库,存储了系统配置、用户偏好、设备信息等数据。以下是一些常见的注册表路径和对应的信息类别,供你参考和扩展:


1. 系统信息

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

    • 描述: 包含系统配置相关的信息。
    • 示例:
      • ComputerName\ActiveComputerName: 当前计算机名称。
      • TimeZoneInformation: 系统时区信息。
  • 路径: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System

    • 描述: 存储硬件信息。
    • 示例:
      • SystemBiosDate: BIOS 日期。
      • SystemBiosVersion: BIOS 版本信息。

2. 软件安装信息

  • 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    • 描述: 存储当前计算机安装的软件信息。
    • 示例:
      • 每个子键对应一个已安装的软件,其下包含:
        • DisplayName: 软件名称。
        • DisplayVersion: 软件版本。
        • InstallLocation: 软件安装路径。

3. 开机自启动项

  • 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    • 描述: 开机启动的全局程序。
    • 示例:
      • 每个值表示一个自启动程序:
        • 键名:程序名称。
        • 键值:程序路径。
  • 路径: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    • 描述: 当前用户的开机启动项。

4. USB 设备历史

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
    • 描述: 记录历史插入的 USB 设备信息。
    • 示例:
      • 子键名称包含设备 VID 和 PID。
      • FriendlyName: 设备友好名称。
      • DeviceDesc: 设备描述。

5. 网络信息

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    • 描述: 存储网络配置信息。
    • 示例:
      • Hostname: 主机名。
      • Domain: 域名。
      • DhcpIPAddress: DHCP 分配的 IP 地址。
  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters

    • 描述: NetBIOS 网络信息。

6. 电源设置

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
    • 描述: 电源管理设置。
    • 示例:
      • HibernateEnabled: 是否启用休眠。
      • CsEnabled: 是否启用连接待机。

7. 用户登录信息

  • 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI
    • 描述: 存储用户登录界面相关设置。
    • 示例:
      • LastLoggedOnUser: 最近登录的用户名。

8. 计划任务

  • 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
    • 描述: 存储计划任务的基本信息。
    • 示例:
      • 子键名对应任务名称,包含任务的触发条件和配置。

9. 安全与防火墙

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
    • 描述: Windows 防火墙相关配置。
    • 示例:
      • StandardProfile: 默认防火墙规则。
      • DomainProfile: 域环境防火墙规则。

10. 硬件信息

  • 路径: HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP
    • 描述: 映射设备与资源的信息。
    • 示例:
      • Scsi: 存储设备的配置信息。
      • VIDEO: 显卡设备信息。

11. 事件日志

  • 路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
    • 描述: 系统和应用程序事件日志的配置。
    • 示例:
      • 子键表示不同日志类型(如 Application、System 等)。

注意事项

  1. 权限问题:

    • 某些注册表键需要管理员权限才能访问。如果权限不足,程序会报错。
  2. 兼容性问题:

    • 不同版本的 Windows 系统中,注册表结构可能略有不同。
  3. 修改注册表的风险:

    • 读取注册表通常是安全的,但写入操作可能会对系统稳定性产生影响,请小心使用。

相关文章:

go采集注册表

package mainimport ("fmt""golang.org/x/sys/windows/registry""log""os""strconv""strings" )func USBSTOR_Enum() {// 打开注册表键keyPath : SYSTEM\CurrentControlSet\Services\USBSTOR\Enumk, err : regist…...

软件工程师欧以宁:引领无人机导航与物联网安全的技术革新

在科技日新月异的今天,软件工程师欧以宁凭借卓越的技术能力和前瞻性的创新思维,成为了无人机自主导航和物联网安全领域的佼佼者。作为一名深耕技术前沿的专家,欧以宁不仅推动了无人机导航技术的突破性进展,还为智能家居和物联网的安全架构提供了全新的解决方案。她的研究成果,以…...

从零开始:Gitee 仓库创建与 Git 配置指南

引言 Git 是一款广泛使用的版本控制工具&#xff0c;它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee&#xff08;码云&#xff09;是国内知名的 Git 托管平台&#xff0c;它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…...

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…...

在 QNAP NAS中使用 Container Station 运行 Docker 的完整指南

QNAP 为用户提供了一个名为 Container Station 的应用&#xff0c;它在 QNAP NAS 上将 Docker 和 LXC 结合在一起&#xff0c;通过图形化界面&#xff0c;让用户更轻松地在 NAS 上管理容器。本文将带你一步步了解如何在 QNAP NAS 上安装和使用 Container Station&#xff0c;以…...

XML在线格式化 - 加菲工具

XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML&#xff0c;点击左上角的“格式化”按钮 得到格式化后的结果...

大数据学习(34)-mapreduce详解

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

代码合并冲突解决push不上去的问题

环境&#xff1a;【IntelliJ IDEA】 【Gerrit】 1、错误信息 代码合并&#xff0c;迭代1合并到迭代2&#xff0c;解决冲突后&#xff0c;依然push不上去&#xff0c;报错信息如下&#xff1a; remote: Processing changes: refs: 1 remote: Processing changes: refs…...

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行&#xff08;APEX&#xff09;接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域&#xff0c;综合模块化航空电子设备&#xff08;IMA&#xf…...

MySQL 与 Redis 数据一致性 2

1. 强一致还是最终一致?2. 先写 MySQL 还是先写Redis?case 1 3. 缓存(Redis)更新还是清除?更新策略更新策略会有数据不一致问题?数据不一致的概率与影响如果使用监听binlog更新数据还会出现数据不一致问题?binlog的消费问题 使用消息队列行不行?其他方案总结: 数据不一致…...

MySQL程序之:使用类似URI的字符串或键值对连接到服务器

本节介绍使用类似URI的连接字符串或键值对来指定如何为MySQLShell等客户端建立到MySQL服务器的连接。 以下MySQL客户端支持使用类似URI的连接字符串或键值对连接到MySQL服务器&#xff1a; MySQL Shell实现X DevAPI的MySQL连接器 本节记录了所有有效的类似URI的字符串和键值…...

Docker私有仓库管理工具Registry

Docker私有仓库管理工具Registry 1 介绍 Registry是私有Docker仓库管理工具&#xff0c;Registry没有可视化管理页面和完备的管理策略。可借助Harbor、docker-registry-browser完成可视化和管理。Harbor是由VMware开发的企业级Docker registry服务。docker-registry-browser是…...

若依前后端分离项目部署(使用docker)

文章目录 一、搭建后端1.1 搭建流程&#xff1a;1.2 后端零件:1.2.1 mysql容器创建&#xff1a;1.2.2 redis容器创建&#xff1a;1.2.3 Dockerfile内容&#xff1a;1.2.4 构建项目镜像&#xff1a;1.2.5 创建后端容器&#xff1a; 二、前端搭建&#xff1a;2.1 搭建流程&#x…...

Unity2021.3.13崩溃的一种情况

如果出现如下的报错&#xff0c;可能是软件冲突的原因。自己的原因是使用f.lux这款软件似乎和Unity相互冲突&#xff0c;出现下面报错。 错误信息如上图...

Temp123

MapDB&#xff1a;的持久化机制&#xff0c;以及源码分析和摘取 1、spark streaming--struct streaming 基于 时间间隔 攒批 2、kafka-connect-hdfs 控制 flush.size 和 interval.ms控制 攒批 - 完全自研 攒批机制 - 使用 embeded 版 https://lxblog.com/qianwen/share?shar…...

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通…...

JavaEE:多线程初阶

JavaEE&#xff1a;多线程初阶 一、线程的原理和进程与线程之间的关系1. 线程的原理线程的基本概念线程的生命周期线程的调度线程的并发与并行 2. 进程与线程的关系进程&#xff08;Process&#xff09;线程与进程的关系进程和线程的对比线程的优势线程的缺点 3. 总结 二、多线…...

Linux之文件系统前世今生(一)

Linux在线1 Linux在线2 一、 基本概念 1.1 块&#xff08;Block&#xff09; 在计算机存储之图解机械硬盘这篇文章中我们提到过&#xff0c;磁盘读写的最小单位是扇区&#xff0c;也就是 512 Byte&#xff1b;很明显&#xff0c;每次读写的效率非常低。 为了提高IO效率&…...

当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线

问题&#xff1a;当设置dialog中有el-table时&#xff0c;并设置el-table区域的滚动&#xff0c;看到el-table中多了一条横线&#xff1b; 原因&#xff1a;el-table有一个before的伪元素作为表格的下边框下&#xff0c;初始的时候已设置&#xff0c;在滚动的时候并没有重新设置…...

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关&#xff08;RD Gateway&#xff09;中的一个重大漏洞&#xff0c;该漏洞可能允许攻击者利用竞争条件&#xff0c;导致拒绝服务&#xff08;DoS&#xff09;攻击。该漏洞被标识为CVE-2025-21225&#xff0c;已在2025年1月的补丁星期二更新中得到…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...