Check for a Registry Key: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Updated author and download links, and changed format of some pages.) |
m (Updated author links.) |
||
Line 1: | Line 1: | ||
{|align=right | |||
|<small>Author: [[{{ns:2}}:Vytautas|Vytautas]] ([[{{ns:3}}:Vytautas|talk]], [[{{ns:-1}}:Contributions/Vytautas|contrib]])</small> | |||
|} | |||
<br style="clear:both;"> | |||
== Description == | == Description == | ||
Include this macro to check to see if a specified registry key exists. After using this macro the stack contains 0 if the key was not present and 1 if it was. | Include this macro to check to see if a specified registry key exists. After using this macro the stack contains 0 if the key was not present and 1 if it was. | ||
Line 55: | Line 59: | ||
Vytautas | Vytautas | ||
Revision as of 23:14, 29 April 2005
Author: Vytautas (talk, contrib) |
Description
Include this macro to check to see if a specified registry key exists. After using this macro the stack contains 0 if the key was not present and 1 if it was.
Note: You can also check the error flag after reading the default value of the registry key to know whether the key exits, that is easier in most situations.
- [UPDATE
- 2004-04-07]
- Fixed another typo.
- [UPDATE
- 2003-11-14]
- Fixed a typo in latest version.
- [UPDATE
- 2003-11-12]
- Added Indexed labels to the macro to enable easier modification if needed.
Usage
!insertmacro IfKeyExists "ROOT" "KeyToCheckIn" "KeyToCheck" Pop $R0 ;$R0 contains 0 (not present) or 1 (present)
The Macro
!macro IfKeyExists ROOT MAIN_KEY KEY push $R0 push $R1 !define Index 'Line${__LINE__}' StrCpy $R1 "0" "${Index}-Loop:" ; Check for Key EnumRegKey $R0 ${ROOT} "${MAIN_KEY}" "$R1" StrCmp $R0 "" "${Index}-False" IntOp $R1 $R1 + 1 StrCmp $R0 "${KEY}" "${Index}-True" "${Index}-Loop" "${Index}-True:" ;Return 1 if found push "1" goto "${Index}-End" "${Index}-False:" ;Return 0 if not found push "0" goto "${Index}-End" "${Index}-End:" !undef Index exch 2 pop $R0 pop $R1 !macroend
This page was created due to this thread.
Vytautas