; OpenReg.nsi
; 檢查某注冊(cè)表鍵是否存在的NSIS例子
; 編寫(xiě):zhfi <zhfi1022@tom.com>
 
;--------------------------------
;定義注冊(cè)表主鍵
!define HKEY_CLASSES_ROOT           0x80000000
!define HKEY_CURRENT_USER           0x80000001
!define HKEY_LOCAL_MACHINE          0x80000002
!define HKEY_USERS                  0x80000003
 
OutFile OpenReg.exe
 
XPStyle on
 
!include LogicLib.nsh
 
;--------------------------------
Name OpenReg
 
Section Nil
SectionEnd
 
Function .onInit
;為鍵的句柄創(chuàng)建一個(gè)緩存
System::Call "*(i 0) i .R0"
;將要檢測(cè)的鍵放入內(nèi)存中
Push "SOFTWARE\TENCENT\QQPinYin"
;調(diào)用API進(jìn)行檢查,返回值在$R1中
system::call 'Advapi32::RegOpenKey(i ${HKEY_LOCAL_MACHINE}, t s, i R0) .iR1'
;關(guān)閉該鍵的句柄
system::call 'Advapi32::RegCloseKey(i R0)'
;釋放內(nèi)存
system::free
;返回值:
;0代表鍵存在
;2代表鍵不存在
;其它值表示出錯(cuò)
${If} $R1 == 0
Contact usthis is my email signatureMessagebox mb_ok "Key Exists!"
${ElseIf} $R1 == 2
Messagebox mb_ok "Key doesn't Exists!"
${Else}
Messagebox mb_ok "Error!"
${EndIf}
Pop $R1
Pop $R0
Quit
FunctionEnd