【Golang语言社区】Go语言操作注册表思路

   大家好,我是社区主编彬哥;本篇文章主要是介绍下Go如何操作windows的注册的思路;在windows平台,用cmd命令大家都启动过注册表吧?

先  win键+R 启动cmd  ;然后在cmd中输入regedit,回车就启动了注册表,如下图

  我不知道大家开发过win程序没有或者开发过MFC的,都是微软自己有一套API可以直接删除、增加、修改注册表的函数;其实就是再原来的命令上自己封装了一层而已。

    所以go语言操作注册表思路如下,熟悉我以上说的就简单了吧:

   1  Go语言代码实现cmd功能。

   2  通过CMD命令传递参数实现,注册表的修改;大家如果感兴趣可以实现程序的开机启动,不懂的可以留言或者去论坛上提问。

以下给大家简单的找了下注册表的相关的操作命令:

Windows提供的reg命令对注册表进行操作

包括添加、更改和显示注册表项中的注册表子项信息和值。

若要查看该命令语法,请单击以下命令:

reg add

将新的子项或项添加到注册表中。

语法

reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

/v EntryName 

指定要添加到指定子项下的项名称。 

/ve 

指定添加到注册表中的项为空值。 

/t DataType 

指定项值的数据类型。DataType 可以是以下几种类型:

REG_SZ

REG_MULTI_SZ

REG_DWORD_BIG_ENDIAN

REG_DWORD

REG_BINARY

REG_DWORD_LITTLE_ENDIAN

REG_LINK

REG_FULL_RESOURCE_DEscriptOR

REG_EXPAND_SZ

/s separator 

指定用于分隔多个数据实例的字符。当 REG_MULTI_SZ 指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔符为 \。 

/d value 

指定新注册表项的值。 

/f 

不用询问信息而直接添加子项或项。 

/?

在命令提示符显示帮助。 

注释

该操作不能添加子树。该版本的 Reg 在添加子项时无需请求确认。 

下表列出了 reg add 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下列范例说明了如何使用 reg add 命令:

reg add \hklm\software\myco /v data /t reg_binary /d fe340ead

reg add "hkcu\software\microsoft\winmine" /v Name3 /t reg_sz /d Anonymous

reg add "hkcu\software\microsoft\winmine" /v Time3 /t reg_dword /d 5

reg compare

比较指定的注册表子项或项。

语法

reg compare KeyName1 KeyName2 [/v EntryName | /ve] {[/oa]|[/od]|[/os]|[on]} 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可使用 HKLM 和 HKU 子目录树。 

/v EntryName 

比较子项下的特定项。 

/ve 

指定只可以比较没有值的项。 

{[/oa]|[/od]|[/os]|[on]} 

指定不同点和匹配点的显示方式。默认设置是 /od。 值 说明 

/oa 指定显示所有不同点和匹配点。默认情况下,仅列出不同点。 

/od 指定仅显示不同点。这是默认操作。 

/os 指定仅显示匹配点。默认情况下,仅列出不同点。 

/on 指定不显示任何内容。默认情况下,仅列出不同点。 

/s Separator 

比较所有子项和项。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg compare 操作的返回值。 值 说明 

0 比较成功且结果相同。 

1 比较失败。 

2 比较成功并找到不同点。 

范例

下面的范例说明了如何使用 reg compare 命令: 

reg compare "hkcu\software\microsoft\winmine" "hkcu\software\microsoft\winmine" /od /s

reg copy

将一个注册表项复制到本地或远程计算机的指定位置。

语法

reg copy KeyName1 KeyName2 [/f] 

参数

KeyName1 

指定要复制子项的完整路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可使用 HKLM 和 HKU 子目录树。 

KeyName2 

指定子项目的地的完整路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可使用 HKLM 和 HKU 子目录树。 

/s 

复制指定子项下的所有子项和项。 

/f 

无需请求确认而直接复制子项。 

/?

在命令提示符显示帮助。 

注释

该版本的 Reg 在复制子项时无须请求确认。 

下表列出了 reg copy 操作的返回值。 值 说明 

0 成功 

1 失败

范例

下列范例说明了如何使用 reg copy 命令:

reg copy "hkcu\software\microsoft\winmine" "hkcu\software\microsoft\winminebk" /s /f

reg copy "hkcu\software\microsoft\winminebk" "hkcu\software\microsoft\winmine" /s

reg delete

从注册表删除项或子项

语法

reg delete KeyName [{/v EntryName|/ve|/va}] [/f] 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

/v EntryName 

删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。 

/ve 

指定只可以删除为空值的项。 

/va 

删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。 

/f 

无需请求确认而删除现有的注册表子项或项。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg delete 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg delete 命令:

reg delete "hkcu\software\microsoft\winmine" /v Name1

reg delete "hkcu\software\microsoft\winmine" /v Time1

reg delete "hkcu\software\microsoft\winmine" /va

reg export

将指定子项、项和值的副本创建到文件中,以便将其传输到其它服务器。

语法

reg export KeyName FileName 

参数

KeyName 

指定子项的完全路径。Export 操作仅可在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

FileName 

指定要导出文件的名称和路径。该文件必须具有 .reg 扩展名。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg export 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg export 命令:

reg export "hkcu\software\microsoft\winmine" c:\data\regbackups\wmbkup.reg

reg import

将包含导出的注册表子项、项和值的文件复制到本地计算机的注册表中。

语法

reg import FileName 

参数

FileName 

指定将复制到本地计算机注册表中的文件的名称和路径。必须预先使用 reg export 命令创建该文件。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg import 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg import 命令:

reg import hkcu\software\microsoft\winmine" c:\data\regbackups\wmbkup.reg

reg load

将保存的子项和项写回到注册表的不同子项中。其目的是保存到一个临时文件中,而该文件可用于注册表项的疑难解答或编辑注册表项。

语法

reg load KeyName FileName 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

FileName 

指定要加载的文件的名称和路径。必须使用带 .hiv 扩展名的 reg save 操作创建该文件。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg load 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg load 命令:

reg load "hkcu\software\microsoft\winminebk2" wmbkup.hiv

reg query

返回注册表的子项下的项和下一层子项的列表。

语法

reg query KeyName [{/v EntryName|/ve}] 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定远程计算机,则只可使用 HKLM 和 HKU 子目录树。 

/v EntryName 

返回特定的项及其值。该参数只返回直接位于指定子项的下一层中的项。将会找不到当前子项下的子项中的项。如果省略 EntryName,则将返回子项下的所有项。 

/ve 

指定仅返回为空值的项。 

/s 

将返回各个层中的所有子项和项。如果不使用该参数,将只返回下一层的子项和项。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg query 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg query 命令:

reg query "hklm\system\currentcontrolset\control\session manager" /v maxstacktracedepth

reg query "hkcu\software\microsoft\winmine" /s

reg restore

将保存的子项和项写回到注册表。

语法

reg restore KeyName FileName 

参数

KeyName 

指定子项的完全路径。Restore 操作仅在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

FileName 

指定将写回到注册表中的文件的名称和路径。必须使用带 .hiv 扩展名的 reg save 操作预先创建该文件。 

/?

在命令提示符显示帮助。 

注释

该操作用于覆盖已编辑的注册表项。编辑注册表项之前,请使用 reg save 操作保存父亲子项。如果编辑失败,则可以使用本操作恢复子项。 

下表列出了 reg restore 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg restore 命令:

reg restore "hkcu\software\microsoft\winmine" wmbkup.hiv

reg save

将指定的子项、项和注册表值的副本保存到指定文件中。

语法

reg save KeyName FileName 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

FileName 

指定所创建的文件的名称和路径。如果未指定路径,则使用当前路径。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg save 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg save 命令:

reg save "hkcu\software\microsoft\winmine" wmbkup.hiv

reg unload

使用 reg load 操作删除已加载的部分注册表。

语法

reg unload KeyName 

参数

KeyName 

指定子项的完全路径。对于远程计算机,请在 \\ComputerName\PathToSubkey 中的子项路径前包含计算机名称。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

/?

在命令提示符显示帮助。 

注释

下表列出了 reg unload 操作的返回值。 值 说明 

0 成功 

1 失败 

范例

下面的范例说明了如何使用 reg unload 命令:

reg unload "hkcu\software\microsoft\winminebk2" 

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏24K纯开源

Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

序言     使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度。这次,又在网上闲逛着,发现了一个个人博客提到了Vim代...

304100
来自专栏数据和云

New in 12.2- 让每个PDB都拥有自己的 local undo表空间

12.1引入temp undo概念 ,12.2引入local undo,也就是每个pdb拥有自己的undo表空间(以前版本共用一个undo表空间),rac中每个...

38450
来自专栏张坤的专栏

Unity编译Android的原理解析和apk打包分析

最近由于想在Scene的脚本组件中,调用Android的Activity的相关接口,就需要弄明白Scene和Activity的实际对应关系,并对Unity调用A...

3K00
来自专栏运维小白

Linux基础(day1)

1.2 约定 使用的系统软件 系统centos7.3系统 虚拟软件VMware workstation 10 终端puTTY+Xshell puTTY下载地址...

291100
来自专栏Android小菜鸡

搭建一个MVP框架

  MVP是一种设计模式,是MVC模式的一种演变。他出现的主要目的是划分代码模块职责,降低模块耦合度,易于单元测试。

32540
来自专栏CodingBlock

Android查缺补漏--BroadcastReceiver的类型与使用

Broadcast 是一种被用于应用内和应用之间传递信息的机制。一个广播可以对应多个接受者。一个完整的广播机制,需要具有以下三个要素: 发送广播的Broadca...

19970
来自专栏向治洪

android 热修补之andfix实践

首先有这方面需要的请到https://github.com/xiangzhihong/andfixDemo/tree/master下载例子 对于网上提供的热补丁...

18650
来自专栏封碎

ConditionVariable的用法 博客分类: Android AndroidUPOSthread

      线程操作经常用到wait和notify,用起来稍显繁琐,而Android给我们封装好了一个ConditionVariable类,用于线程同步。提供了...

7920
来自专栏数据和云

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

? 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB...

37250
来自专栏数据和云

Oracle 12.2 新特性 | PDB不同字符集变更深入解析

从12c版本12.1开始,就有了新特性——Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Data...

38590

扫码关注云+社区

领取腾讯云代金券