我使用 NSIS 从注册表中检索了一个字符串,其中包含多个分号作为分隔符,例如:ABC;123;XYZ。我想检查该字符串中是否存在特定的子字符串(例如“123”)。如果它确实存在,我不想执行任何操作。但是,如果子字符串不存在(例如,如果我检查“qwe”),我需要将其附加到原始字符串的末尾,然后将更新后的值写回注册表。
这是一个明显的例子:
原始注册表值:ABC;123;XYZ 特定字符串:“123”→ 无需执行任何操作。 特定字符串:“qwe”→将值更新为 ABC;123;XYZ;qwe。
如果您想更新
%PATH%
环境变量,您必须使用EnVar插件。
否则,你必须自己做一些工作:
!include WordFunc.nsh
!include LogicLib.nsh
Var Find
Section
StrCpy $1 "ABC;123;XYZ" ; ReadRegStr ...
StrCpy $Find "123"
${WordFind} $1 ";" "/$Find" $0
${If} $0 = $1
DetailPrint '$Find not found in $1'
${Else}
DetailPrint '$Find is string #$0 in $1'
${EndIf}
StrCpy $Find "qwe"
${WordFind} $1 ";" "/$Find" $0
${If} $0 = $1
DetailPrint '$Find not found in $1'
${WordAdd} $1 ";" "+$Find" $1
DetailPrint 'WriteRegStr ... $1'
${Else}
DetailPrint '$Find is string #$0 in $1'
${EndIf}
SectionEnd