Registrul din nsis

includeți "RegistryFunc.nsh"

  • Ștergeți toate subcheile de registru de către masca specificată
După cum știți, atunci când asociați o aplicație cu anumite tipuri de fișiere, apare problema de a elimina aceleași chei de registry,
tip 7-zip.001, 7zip.zip, 7-zip.rar, 7-zip.7z și așa mai departe. Este necesar să faci o muncă de rutină, după toate într-un scenariu este necesar să se înregistreze zeci,
și uneori sute de intrări pentru a șterge subcheiile de registru, pentru fiecare extensie - este nevoie de o mulțime de nervi și de timp.
$ "cheia de registry" "mască dată" În acest exemplu, toate partițiile în HKLM vor fi șterse. HKCU. HKCR în ramura Software / Classes, începând cu numele 7-zip,
adică masca 7-Zip 0.001, 7-Zip .zip, 7-Zip .rar, 7-zip, etc -7z $ "$ \ Software \ Classes" "7-zip"
$ "$ \ Software \ Classes" "7-zip"
$ "$" "7-zip"
Fiti atenti in alegerea mastii de demarcare.

  • Ștergerea parametrilor cheie de registru de către masca specificată a valorilor acestor taste Căutarea este efectuată numai pentru parametrii de șir: REG_SZ și REG_EXPAND_SZ
    În fereastra cu detalii, se afișează cheile de la distanță, dacă nu există nimic în fereastra de părți, atunci căutarea este în curs!
    Specificați ramura registrului, cât mai exact posibil, este necesar
    pentru a scurta timpul de căutare, care poate dura foarte mult timp!
    $ "cheia de registry" "masca specificată"
    În acest exemplu, toate valorile parametrilor cheie vor fi șterse (inclusiv și în cheile imbricate),
    începând cu numele 7-zip. adică prin mască: 7-zip * orice caractere *
    $ "$ \ Software \ 7-zip" "7-zip" Fiti atenti in alegerea mastii de retragere.

  • Eliminarea parametrilor cheie din registri utilizând masca de nume specificată a parametrilor Căutarea este efectuată numai pentru parametrii de șir: REG_SZ și REG_EXPAND_SZ
    În fereastra cu detalii se afișează tastele de la distanță, dacă nu există nimic în fereastra de părți, atunci căutarea este în curs!
    Specificați ramura registrului, cât mai exact posibil, este necesar
    pentru a scurta timpul de căutare, care poate dura foarte mult timp!
    $ "cheie de registru" "masca specificată" În acest exemplu, toți parametrii cheie (de asemenea, inclusiv în cheile imbricate) sunt șterse, nu confundați cu valoarea parametrului!
    începând cu numele 7-zip. adică prin mască: 7-zip * orice caractere *
    $ "$ \ Software \ 7-zip" "7-zip" Fiti atenti in alegerea mastii de retragere.

    Macroul deplasează cheia de registry specificată, inclusiv subcheiile și parametrii cheie, pe calea specificată din registru.
    Dacă doriți să treceți la o altă cheie care nu există - va fi creată cheia.
    $ „Cheia specificata“, „în cazul în care pentru a muta cheia specificată“ În acest exemplu, software \ 7-Zip la rădăcina de ramură cheie HKCU va preremeschen (inclusiv subchei), la filiala rădăcină HKLM.
    $ "Software \ 7-zip" "$ \ Software \ 7-zip" Dacă cheia de registry pe care doriți să o mutați nu există,

    Macroul mută parametrul cheie, nu îl confundați cu valoarea parametrului. în locul specificat.
    Dacă doriți să treceți la o altă cheie care nu există - va fi creată cheia.
    $ "cheie specificată" "numele parametrului" "unde se copiază numele parametrului specificat" "În acest exemplu, numele parametrului Path.bak al cheii $ \ Software se va muta
    în parametrul cu numele Calea cheii $ \ Software \ 7-zip. $ "Path.bak" "$ \ Software \ 7-zip" "Cale" Dacă parametrul pe care doriți să îl mutați nu există,

  • Construcția logică a definiției cheii de registry
  • $ $ "$ \ Software \ 7-zip"
    # comenzile sunt executate aici, dacă cheia există
    DetaliiTipă "Cheia este!"
    $
    # comenzile sunt executate aici, dacă cheia nu există
    DetailPrint "Cheia nu există!"
    $

  • Conversia unui șir la un cod HEX
  • $ "string" $ var Numărul maxim de caractere dintr-un șir. nu trebuie să depășească sau să fie egale cu - 512 de caractere. Pentru versiunea extinsă a caracterelor NSIS - 4096
    Acest lucru se datorează faptului că, atunci când traduceți un tip de valoare de șir într-un cod HEX (în formă hexazecimală), un caracter ocupă doi octeți.
    Dacă dimensiunea liniei depășește 512 octeți (pentru versiunea extinsă a NSIS, 4096 octeți)
    variabila $ var returnează valoarea -
    De exemplu, toată lumea știe "Bună ziua, lumea!" după procesarea macro-ului arata ca "48656C6C6F2C20576F726C6421"
    "Bună ziua, Cuvânt!" $ 0
    Detalii de imprimare 0 $
  • Scrieți o valoare binară
  • $ "cheie de registry" "nume de parametru" Deoarece comanda standard WriteRegBin nu vă permite să scrieți o valoare binară ca valoare variabilă.
    "Bună ziua, Cuvânt!" $ 0
    $ "$ \ Software \ My Company \ Software-ul meu" "Binar" $ 0
    Datele care trebuie înregistrate trebuie să fie în formă hexazecimală.
    Dacă parametrul nu există, acesta va fi creat.
    Dacă mărimea datelor este mai mare de 1024 de caractere (pentru versiunea extinsă a NSIS - 8192 caractere), semnalizatorul de eroare este setat
    Deoarece un caracter în forma hexazecimală are doi octeți,
    lungimea valorii inregistrabile trebuie sa fie un numar parcat - in caz contrar este setat stegul de eroare
    $ "$ \ Software \ My Company" "Binar" DEADBEEF012232111510
    Dacă erorile 0 +2
    MessageBox MB_ICONSTOP | MB_OK "eroare" IDOK
    Lungimea valorii DEADBEEF012232111510 este de 20 de caractere, dacă ștergeți un caracter, atunci este setat semnalizatorul de eroare

  • Citirea unei valori binare
  • În NSIS, nu există comenzi standard pentru citirea valorilor multicell din registru
    Citește valoarea parametrului REG_MULTI_SZ din variabila $ var
    $ $ var "cheie de registry" "nume de parametru" Dacă parametrul nu corespunde tipului REG_MULTI_SZ, variabila $ var returnează o valoare -
    Dacă valoarea valorii depășește 1024 caractere (pentru versiunea extinsă a NSIS 8192 caractere)
    variabila $ var returnează valoarea -
    Dacă cheia sau parametrul nu există în variabila $ var,
    $ $ 0 "$ \ Software \ Microsoft \ Dispozitive portabile Windows \ FormatMap \ .jpeg" "Format"
    MessageBox MB_OK "$ 0" IDOK

  • Enumerarea tuturor cheilor, parametrilor și valorilor parametrilor
  • $ "Key" "Opțiuni" Funcția "[key]" cheia de registry din care să înceapă căutarea

    "[Opțiuni]" / K = 0 | 1
    / K = 0 - implicit
    / K = 1 - lista numai cheile de registry, ignoră cheile. / V și / T

    / G = 0 1
    / G = 0 - nu enumerați subsecțiuni
    / G = 1 - listați partițiile imbricate (implicit)

    / V = ​​0 | 1
    / V = ​​0 - nu enumerați valorile parametrilor
    / V = ​​1 - lista valorilor parametrilor (implicit)

    / T = [REG_SZ | REG_EXPAND_SZ | REG_MULTI_SZ | REG_DWORD | REG_BINARY]
    / T = REG_SZ - enumerarea numai a parametrilor de tip REG_SZ
    / T = REG_EXPAND_SZ - enumerarea numai a parametrilor de tip REG_EXPAND_SZ
    / T = REG_MULTI_SZ - enumerarea numai a parametrilor de tip REG_MULTI_SZ
    / T = REG_DWORD - enumerarea numai a parametrilor de tipul REG_DWORD
    / T = REG_BINARY - enumerarea numai a parametrilor de tip REG_BINARY

    "Funcție" funcție de apel definită de utilizator.

    Funcția "Funcție"
    $ 1 - cheie de registru
    $ 2 - numele parametrului
    $ 3 este valoarea parametrului
    $ 4 - tip de parametru
    $ R8 - rădăcina regiștrilor, pentru informații în fereastra cu detalii
    Funcția folosește variabilele $ R0 - $ R9, $ 0 - $ 4
    adică într-o funcție liberă de a folosi variabilele $ 5 - $ 9
    dacă ați pus StopRegFind în variabila $ 0 - enumerarea va fi întreruptă: StrCpy $ 0 StopRegFind
    funcția nu poate utiliza stiva
    FunctionEnd Dimensiunea maximă a valorii parametrului este de 1023 de caractere. indiferent de versiunea extinsă a NSIS
    Valorile variabilelor $ R0 - $ R9 și $ 0 - $ 4 înainte de a utiliza macro-ul vor fi salvate și restaurate după macrocomandă
    Pentru a afișa numai secțiunile din ramura rădăcină a HKCR, partițiile imbricate nu vor fi enumerate. secțiune
    $ "$" "/ K = 1 / G = 0" EnumReg
    SectionEnd

    Funcția EnumReg
    Detalii de imprimare "$ R8 \ $ 1"
    FunctionEnd
    Afișează numai secțiunile din ramura rădăcină a HKCR, inclusiv cele imbricate. secțiune
    $ "$" "/ K = 1" EnumReg
    SectionEnd

    Funcția EnumReg
    Detalii de imprimare "$ R8 \ $ 1"
    FunctionEnd
    Afișați toate partițiile, parametrii și valorile parametrilor existente în SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall. secțiune
    $ "SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" "" EnumReg
    SectionEnd

    Funcția EnumReg
    Detaliu imprimare `$ R8 '$ 1" `
    DetailPrint "Nume parametru: $ 2"
    DetailPrint "Valoarea parametrului: $ 3"
    Detaliu imprimare "Tipul parametrului: $ 4"
    DetailPrint "--------------"
    FunctionEnd
    Afișați toate secțiunile existente ale valorilor parametrilor de tip REG_DWORD. secțiune
    $ "SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" "/ T = REG_DWORD" EnumReg
    SectionEnd

    Funcția EnumReg
    Detaliu imprimare `$ R8 '$ 1" `
    DetailPrint "Nume parametru: $ 2"
    DetailPrint "Valoarea parametrului: $ 3"
    Detaliu imprimare "Tipul parametrului: $ 4"
    DetailPrint "--------------"
    FunctionEnd
    Enumerați în toate secțiunile existente valorile parametrilor de tipul REG_SZ, REG_MULTI_SZ și REG_EXPAND_SZ. secțiune
    $ "$ \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" "/ T = REG_SZ REG_MULTI_SZ REG_EXPAND_SZ" EnumReg
    SectionEnd

    Funcția EnumReg
    Detaliu imprimare `$ R8 '$ 1" `
    DetailPrint "Nume parametru: $ 2"
    DetailPrint "Valoarea parametrului: $ 3"
    Detaliu imprimare "Tipul parametrului: $ 4"
    DetailPrint "--------------"
    FunctionEnd
    Listați în toate secțiunile existente numai numele parametrilor de tip REG_SZ. secțiune
    $ "SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" "/ T = REG_SZ / V = ​​0" EnumReg
    SectionEnd

    Funcția EnumReg
    Detaliu imprimare `$ R8 '$ 1" `
    DetailPrint "Nume parametru: $ 2"
    Detaliu imprimare "Tipul parametrului: $ 4"
    DetailPrint "--------------"
    FunctionEnd

    Pentru o alternativă la bibliotecă, consultați Registrul: Lucrul cu registrul



















  • Trimiteți-le prietenilor: