今天要来介绍的是.reg文件的写法,要实作前请记得先做好备份喔!
这是当作给自己最後的作业,对登录档有熟悉感後,要学会写.reg文件才算合格,其实这份文件也不难所以就用一篇的时间来研究这部分吧。
其实还有像是使用命令提示字元的REG指令,或是一些程序可以嵌入修改的函式等等方法,我们暂时不讨论这部分,写.reg档是最快速方便的方法,他比起cmd指令可以一次整合指令好阅读,而我们也不是写什麽软件需要在程序中更改登录档,学会这项技能可以看懂汇出的备份档,也可以转移档案随处随用,甚至算是一个简单的急救方法,因为常常有人误删登录档(例如删除HKEY_CLASSES_ROOT.exe子键,这会失去.exe档的开启方式连结,造成.exe档无法找到开启方式),最後发生regedit.exe打不开无法改回登录档的情况,这个时候写一份.reg文件执行他就可以了回复了。
所谓.reg文件大概长下列这样,下面是当我把HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
子键汇出备份的样子。
微软官方则给出这样的公式,我们用这张来说明简单的语法标示:
注解可以在句首使用分号(;),整行即被视为注解。
整份文件写完最後应该留下一条空行(Blank line)。
REG_SZ类型也可以用hex(1)表示,但值需要用UTF-16LE表示,并用NUL结尾。而其实上述的hex值括号内的数字是各种资料类型的Type ID。
看完基础的解说後,我们现在应该能做到新增和修改登录值,往下我们在HKEY_CURRENT_USER\Control Panel\Desktop
子键下测试看看。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop\Test1]
;这是注解1
[HKEY_CURRENT_USER\Control Panel\Desktop\Test2\Test22]
@="qwertyuiop"
"@"="qwertyuiop"
;这是注解2
"Test2Code1"=dword:00000010
"Test2Code2"=""
"Test2Code3"="test\\test\"test"
;这是注解3
注解1:本来没有Test1这个子键,所以这行会建立它,然後下面没有给登录值所以只会看到数值未设定的REG_SZ预设值。
注解2:@可以设定预设值,但是加上双引号则会视为登录值名称。
注解3:直接往下接两个新子键也是可以的建立的,dword的给值会视为16进位,字串值为空时可直接打双引号,反斜线和引号也可以标示。
如果要修改登录值直接写就会覆盖掉原本的值,我们拿刚建立的Test22子键来测试看看:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop\Test2\Test22]
"Test2Code1"=dword:000000a3
;这是注解1
"Test2Code2"=dword:00000011
;这是注解2
"Test2Code3"="aaaa"
"Test2Code3"="bbbb"
;这是注解3
"Test2Code4"=hex(2):61,00,62,00,63,00,00,00
;这是注解4
"Test2Code5"="我是字串"
;这是注解5
更改存档编码为UTF-16LE with BOM後,中文可正常显示:
如果要删除分支(子键及子键内的一切),直接在DataItemName的中括号内的开头补上连字符(-),例如:[-HKEY_CURRENT_USER\Control Panel\Desktop\Test1]
,整个子键就会被删除
如果要删除各别登录值,则直接在等号後接上连字符(-),如果要删除预设值的内容,也就是恢复数值未设定的状态就直接打@=-
如果要重新命名登录值或是子键,作法就是删除他再建立新的。
下面给些范例:
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Control Panel\Desktop\Test1]
[HKEY_CURRENT_USER\Control Panel\Desktop\Test2\Test22]
@=-
;这是注解1
"Test2Code2"=-
;这是注解2
"Test2Code3"=-
;这是注解3
以上就是.reg文件写法的基础介绍,遇到不会写的也可以汇出类似的登录值,比对看看就大概看懂了,因为这份文件的格式不难,学会写以後也多了一项奇怪的技能可以炫耀哈哈。
而且写到这里你可能会发现一件事,当我们把登录档汇出成.reg档作为备份的时候,我们不能预测之後会新增什麽登录档,所以备份里没有删除的指令,还原的时候新增过的登录档并不会删除只会复写旧的登录档,所以这样的还原不完全,用系统还原点才会比较完整。
现在我们已经熟悉登录档的意义和操作原理,下篇我们会从软件的安装和反安装来看程序对系统的读写操作,不只对登录档,还有各种大小文件的连结关系,对系统稳定性的影响。
参考资料:
https://forum.gamer.com.tw/C.php?bsn=60030&snA=528832
https://en.wikipedia.org/wiki/Windows_Registry
https://support.microsoft.com/en-us/topic/how-to-add-modify-or-delete-registry-subkeys-and-values-by-using-a-reg-file-9c7f37cf-a5e9-e1cd-c4fa-2a26218a1a23
https://www.twblogs.net/a/5d6d014ebd9eee5327ff0639
<<: 【Day 10】分类(Classification)(上)
>>: Day 08: Creational patterns - Builder
今天直奔新主题!XDD 昨天提要 trace 的程序码,trace 的不多,今天就还是先来看个文件,...
前言 Reactive forms提供了一种model-driven的方法来处理表单中会随时间变化的...
学习目标 这一篇是纪录阅读官方文件 Add services 的笔记内容。 本篇的内容是接续 Day...
在前一篇文章我们知道 suspend 函式必须要在 Coroutine scope 里面才能执行,本...
兔女鹅: 「爸爸,兔兔昨天讲的好难」 「有一大堆东西要记起来,要学不动了 QQ」 兔跋: 「一定是...