Sdílet prostřednictvím


Příklady skriptování registru

Poznámka:

Knihovna ATL (Active Template Library) se nadále podporuje. Už ale nepřidáme funkce ani aktualizujeme dokumentaci.

Příklady skriptování v tomto tématu ukazují, jak přidat klíč do systémového registru, zaregistrovat server COM registrátora a zadat více stromů analýzy.

Přidání klíče do HKEY_CURRENT_USER

Následující strom analýzy znázorňuje jednoduchý skript, který přidá do systémového registru jeden klíč. Konkrétně skript přidá klíč , MyVeryOwnKeydo HKEY_CURRENT_USER. Přiřadí také výchozí řetězcovou hodnotu HowGoesIt k novému klíči:

HKEY_CURRENT_USER
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}

Tento skript lze snadno rozšířit a definovat více podklíčů následujícím způsobem:

HKCU
{
    'MyVeryOwnKey' = s 'HowGoesIt'
    {
        'HasASubkey'
        {
            'PrettyCool' = d '55'
            val 'ANameValue' = s 'WithANamedValue'
        }
    }
}

Nyní skript přidá podklíč , HasASubkeydo MyVeryOwnKey. K tomuto podklíči přidá jak podklíč PrettyCool (s výchozí hodnotou DWORD 55), tak pojmenovanou hodnotu ANameValue (s řetězcovou hodnotou WithANamedValue).

Registrace serveru COM registrátora

Následující skript zaregistruje samotný server COM registrátora.

HKCR
{
    ATL.Registrar = s 'ATL Registrar Class'
    {
        CLSID = s '{44EC053A-400F-11D0-9DCD-00A0C90391D3}'
    }
    NoRemove CLSID
    {
        ForceRemove {44EC053A-400F-11D0-9DCD-00A0C90391D3} = s 'ATL Registrar Class'
        {
            ProgID = s 'ATL.Registrar'
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }
        }
    }
}

Během běhu tento syntaktický strom přidá ATL.Registrar klíč do HKEY_CLASSES_ROOT. K tomuto novému klíči pak:

  • Určuje ATL Registrar Class jako výchozí řetězcovou hodnotu klíče.

  • Přidá CLSID jako podklíč.

  • Určuje {44EC053A-400F-11D0-9DCD-00A0C90391D3} pro CLSID. (Tato hodnota je CLSID registrátora pro použití s CoCreateInstance.)

Vzhledem k tomu, že CLSID je sdílený, neměl by být odebrán v režimu odregistrování. Tento příkaz označuje, NoRemove CLSID, že CLSID by se měl otevřít v režimu registrace a ignorovat v režimu odregistrace.

Příkaz ForceRemove poskytuje funkci úklidu odebráním klíče a všech jeho podklíčů před opětovným vytvořením klíče. To může být užitečné, pokud se změnily názvy podklíčů. V tomto příkladu skriptování zkontroluje, ForceRemove jestli {44EC053A-400F-11D0-9DCD-00A0C90391D3} už existuje. Pokud ano, ForceRemove:

  • Rekurzivně odstraní {44EC053A-400F-11D0-9DCD-00A0C90391D3} a všechny jeho podklíče.

  • Znovu vytvoří {44EC053A-400F-11D0-9DCD-00A0C90391D3}.

  • Přidá ATL Registrar Class jako řetězcovou výchozí hodnotu pro {44EC053A-400F-11D0-9DCD-00A0C90391D3}.

Strom analýzy nyní přidává dva nové podklíče k {44EC053A-400F-11D0-9DCD-00A0C90391D3}. První klíč, ProgIDzíská výchozí řetězcovou hodnotu, která je ProgID. Druhý klíč, InprocServer32získá výchozí řetězcovou hodnotu, %MODULE%což je hodnota preprocesoru vysvětlená v části Použití nahraditelných parametrů (Preprocesor registrátora) tohoto článku. InprocServer32 získá také pojmenovanou hodnotu, ThreadingModel s řetězcovou hodnotou Apartment.

Zadání více stromů analýzy

Pokud chcete zadat více než jeden strom analýzy ve skriptu, jednoduše umístěte jeden strom na konec druhého. Například následující skript přidá klíč MyVeryOwnKey do stromů parsování pro HKEY_CLASSES_ROOT a HKEY_CURRENT_USER:

HKCR
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}
HKEY_CURRENT_USER
{
    'MyVeryOwnKey' = s 'HowGoesIt'
}

Poznámka:

Ve skriptu registrátora je maximální velikost tokenu 4K. (Token je jakýkoli rozpoznatelný prvek v syntaxi.) V předchozím příkladu skriptování , HKCR, HKEY_CURRENT_USER'MyVeryOwnKey'a 'HowGoesIt' jsou všechny tokeny.

Viz také

Vytváření skriptů registrátoru