2015-01-08 25 views
5

Bir kayıt defteri değeri olup olmadığını kontrol etmeliyim. Bunu nasıl yapabilirim?NSIS - kayıt defteri anahtarı değeri olup olmadığını kontrol edin

Benim ilk yaklaşım:

ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" 
     ${IF} $0 == "" 
       MESSAGEBOX MB_OK "NUL exists" 
     ${ELSE} 
       WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" "" 
     ${ENDIF} 

Ama değeri yok bu da çalışır. Sanırım, çünkü "yok" ve boş dize aynı şekilde ele alındı.

${registry::Read} "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" $var1 $var2 

     ${IF} $var2 == "REG_SZ" 

Ama registry.nsh Pop $ {_ STRING} çalışmaz çünkü bir hata alıyorum: Registry.nsh ile

böyle yaptım.

Yardım ve öneriler hoş geldiniz!

cevap

9

Sen okuma sonra hata bayrağı kontrol etmelidir:

ClearErrors 
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" 
${If} ${Errors} 
    MessageBox MB_OK "Value not found" 
${Else} 
    ${IF} $0 == "" 
       MESSAGEBOX MB_OK "NUL exists and it's empty" 
     ${ELSE} 
       WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" "" 
     ${ENDIF} 
${EndIf} 

Ayrıca, okudun denemeden önce EnumRegValue ilginizi çekebilir.

+0

Teşekkürler! Bu mükemmel çalıştı! – user3629892

İlgili konular