·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 工具使用 >> 关于 NSIS 写入注册表的问题, REG_MULTI_SZ 类型    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

关于 NSIS 写入注册表的问题, REG_MULTI_SZ 类型

作者: RESTOOLS 来源:RESTOOLS 时间:2006-08-06 点击:13221

在官方论坛找到了这个插件,传上来共享,这个插件不错,支持很多类型的键值的读取和写入,真的非常不错,对于经常跟注册表打交道的汉化软件安装程序,一定要备一个

文件下载: 点击这里下载

至于不用插件,纯用脚本写的对于注册表这种类型的值的写入,以下是一个参考脚本例子。
引用来自 Untitled01,2006-5-13 2:36:24 引用来自 Untitled01,2006-5-13 2:36:24
OutFile "REG_MULTI_SZ_writer.exe"
Name "REG_MULTI_SZ"
ShowInstDetails show

!define HKEY_CLASSES_ROOT        0x80000000
!define HKEY_CURRENT_USER        0x80000001
!define HKEY_LOCAL_MACHINE      0x80000002
!define HKEY_USERS              0x80000003
!define HKEY_PERFORMANCE_DATA    0x80000004
!define HKEY_PERFORMANCE_TEXT    0x80000050
!define HKEY_PERFORMANCE_NLSTEXT 0x80000060
!define HKEY_CURRENT_CONFIG      0x80000005
!define HKEY_DYN_DATA            0x80000006

!define KEY_QUERY_VALUE          0x0001
!define KEY_SET_VALUE            0x0002
!define KEY_create_SUB_KEY      0x0004
!define KEY_ENUMERATE_SUB_KEYS  0x0008
!define KEY_NOTIFY              0x0010
!define KEY_create_LINK          0x0020

!define REG_NONE                0
!define REG_SZ                  1
!define REG_EXPAND_SZ            2
!define REG_BINARY              3
!define REG_DWORD                4
!define REG_DWORD_LITTLE_ENDIAN  4
!define REG_DWORD_BIG_ENDIAN    5
!define REG_LINK                6
!define REG_MULTI_SZ            7

!define RegcreateKey            "Advapi32::RegcreateKeyA(i, t, *i) i"
!define RegSetValueEx            "Advapi32::RegSetValueExA(i, t, i, i, i, i) i"
!define RegCloseKey              "Advapi32::RegCloseKeyA(i) i"

####### Edit this!
!define ROOT_KEY                "${HKEY_LOCAL_MACHINE}"
!define SUB_KEY                  "SOFTWARE\NSIS"
!define VALUE                    "RegMultiSzTest"
!define DATA_1                  "First string"
!define DATA_2                  "Second string"
####### Stop editing

Section "Write"
  
SetPluginUnload alwaysoff
  
; create a buffer for the multi_sz value
  
System::Call "*(&t${NSIS_MAX_STRLEN}) i.r1"
  
; Open/create the registry key
  
System::Call "${RegcreateKey}(${ROOT_KEY}, '${SUB_KEY}', .r0) .r9"
  
; Failed?
  
IntCmp $9 0 write
    MessageBox MB_OK|MB_ICONSTOP "Can't create registry key! ($9)"
    
Goto noClose

  write:
    ; Fill in the buffer with our strings
    
StrCpy $2 $1                            ; Initial position

    
StrLen $9 '${DATA_1}'                  ; Length of first string
    
IntOp $9 $9 + 1                        ; Plus null
    
System::Call "*$2(&t$9 '${DATA_1}')"    ; Place the string
    
IntOp $2 $2 + $9                        ; Advance to the next position

    
StrLen $9 '${DATA_2}'                  ; Length of second string
    
IntOp $9 $9 + 1                        ; Plus null
    
System::Call "*$2(&t$9 '${DATA_2}')"    ; Place the string
    
IntOp $2 $2 + $9                        ; Advance to the next position

    
System::Call "*$2(&t1 '')"              ; Place the terminating null
    
IntOp $2 $2 + 1                        ; Advance to the next position

    ; create/write the value
    
IntOp $2 $2 - $1                        ; Total length
    
System::Call "${RegSetValueEx}(r0, '${VALUE}', 0, ${REG_MULTI_SZ}, r1, r2) .r9"
    
; Failed?
    
IntCmp $9 0 done
      MessageBox MB_OK|MB_ICONSTOP "Can't set key value! ($9)"
      
Goto done

  done:
    ; Close the registry key
    
System::Call "${RegCloseKey}(r0)"

noClose:
  ; Clear the buffer
  
SetPluginUnload manual
  
System::Free $1
SectionEnd


汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): NSIS 安装程序 插件 脚本 注册表

·上一篇: 在NSIS中如何禁止一个组件组的父项的点击事件 ·下一篇: 汉化作品被杀毒软件报警声明及相关说明

· 版权申明: 本文引自《RESTOOLS》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《RESTOOLS》[ 作者: RESTOOLS],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号