NSIS 檢查某登錄檔鍵是否存在

2021-09-06 14:51:44 字數 1034 閱讀 8914

原文nsis:檢查某登錄檔鍵是否存在

;定義登錄檔主鍵

!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

;為鍵的控制代碼建立乙個快取

system::call "*(i 0) i .r0"

;將要檢測的鍵放入記憶體中

push "software\tencent\qqpinyin"

;呼叫api進行檢查,返回值在$r1中

system::call 'advapi32::regopenkey(i $, t s, i r0) .ir1'

;關閉該鍵的控制代碼

system::call 'advapi32::regclosekey(i r0)'

;釋放記憶體

system::free

;返回值:

;0代表鍵存在

;2代表鍵不存在

;其它值表示出錯

$ $r1 == 0

messagebox mb_ok "key exists!"

$ $r1 == 2

messagebox mb_ok "key doesn't exists!"

$messagebox mb_ok "error!"

$pop $r1

pop $r0

quit

functionend

NSIS訪問X64登錄檔

nsis生成的安裝程式是32位程式,在64位系統上訪問登錄檔會重定向到wow6432node.使用 setregview 64 將允許安裝程式在 x64 中訪問登錄檔鍵值。它將影響deleteregkey,deleteregvalue,enumregkey,enumregvalue,readregd...

NSIS記住安裝目錄(通過讀寫登錄檔)

前人留下的打包 對nsis一知半解的情況下改了改,記住使用者上次安裝路徑。define product uninst root key hklm define dir programfiles demo 預設路徑 判斷 為instdir賦值 function page.1 readregstr r0...

C 操作登錄檔例項(包括判斷路徑是否存在)

在應用程式安裝時,常常需要利用登錄檔來登記應用程式的名稱 執行路徑 使用者對應用程式的配置資訊等 許多應用程式在執行時也常常需要訪問登錄檔。net 框架結構在 microsoft.win32 名字空間內提供了兩個類用於登錄檔操作 registry 和registrykey 這兩個類都是密封類,不允許...