The formal syntax, as specified using `BNF <https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form>`_ notation with the regular extensions, for registry query is the following: .. parsed-literal:: registry_query ::= '[' `sep_definition`_? `root_key`_ ((`key_separator`_ `sub_key`_)? (`value_separator`_ `value_name`_)?)? ']' _`sep_definition` ::= '{' `value_separator`_ '}' _`root_key` ::= 'HKLM' | 'HKEY_LOCAL_MACHINE' | 'HKCU' | 'HKEY_CURRENT_USER' | 'HKCR' | 'HKEY_CLASSES_ROOT' | 'HKCC' | 'HKEY_CURRENT_CONFIG' | 'HKU' | 'HKEY_USERS' _`sub_key` ::= `element`_ (`key_separator`_ `element`_)* _`key_separator` ::= '/' | '\\' _`value_separator` ::= `element`_ | ';' _`value_name` ::= `element`_ | '(default)' _`element` ::= `character`_\+ _`character` ::= <any character except `key_separator`_ and `value_separator`_> The `sep_definition`_ optional item offers the possibility to specify the string used to separate the `sub_key`_ from the `value_name`_ item. If not specified, the character ``;`` is used. .. parsed-literal:: # example using default separator |FIND_XXX| (... **PATHS** "/root/[HKLM/Stuff;InstallDir]/lib[HKLM\\\\Stuff;Architecture]") # example using different specified separators |FIND_XXX| (... **HINTS** "/root/[{|}HKCU/Stuff|InstallDir]/lib[{@@}HKCU\\\\Stuff@@Architecture]") If the `value_name`_ item is not specified or has the special name ``(default)``, the content of the default value, if any, will be returned. The supported types for the `value_name`_ are: * ``REG_SZ``. * ``REG_EXPAND_SZ``. The returned data is expanded. * ``REG_DWORD``. * ``REG_QWORD``. When the registry query failed, typically because the key does not exist or the data type is not supported, the string ``/REGISTRY-NOTFOUND`` is substituted to the ``[]`` query expression.