REGTOOL(1)

NAME
regtool - View or edit the Windows registry

SYNOPSIS

regtool [-qvwW] add|check|get|list|remove|unset|load|unload|save KEY [PATH | DATA...]

regtool add KEY\SUBKEY

regtool check KEY

regtool [-bnx] get KEY

regtool [-klp] list KEY

regtool remove KEY

regtool [-bDeimnQsf] set KEY\VALUE [DATA...]

regtool [-f] unset KEY\VALUE

regtool load KEY\SUBKEY PATH

regtool unload KEY\SUBKEY

regtool save KEY\SUBKEY PATH

regtool [-f] restore KEY/SUBKEY PATH

regtool -h | -V

OPTIONS

    Actions:
     add KEY\SUBKEY             add new SUBKEY
     check KEY                  exit 0 if KEY exists, 1 if not
     get KEY\VALUE              prints VALUE to stdout
     list KEY                   list SUBKEYs and VALUEs
     remove KEY                 remove KEY
     set KEY\VALUE [data ...]   set VALUE
     unset KEY\VALUE            removes VALUE from KEY
     load KEY\SUBKEY PATH       load hive from PATH into new SUBKEY
     unload KEY\SUBKEY          unload hive and remove SUBKEY
     save KEY\SUBKEY PATH       save SUBKEY into new file PATH
     restore KEY\SUBKEY PATH    restore SUBKEY from file PATH
    Options for 'list' Action:
     -k, --keys           print only KEYs
     -l, --list           print only VALUEs
     -p, --postfix        like ls -p, appends '\' postfix to KEY names
    Options for 'get' Action:
     -b, --binary         print REG_BINARY data as hex bytes
     -n, --none           print data as stream of bytes as stored in registry
     -x, --hex            print numerical data as hex numbers
    Options for 'set' Action:
     -b, --binary         set type to REG_BINARY (hex args or '-')
     -D, --dword-be       set type to REG_DWORD_BIG_ENDIAN
     -e, --expand-string  set type to REG_EXPAND_SZ
     -i, --integer        set type to REG_DWORD
     -m, --multi-string   set type to REG_MULTI_SZ
     -n, --none           set type to REG_NONE
     -Q, --qword          set type to REG_QWORD
     -s, --string         set type to REG_SZ
    Options for 'set' and 'unset' Actions:
     -K<c>, --key-separator[=]<c>  set key separator to <c> instead of '\'
    Options for 'restore' action:
     -f, --force    restore even if open handles exist at or beneath the location
                    in the registry hierarchy to which KEY\SUBKEY points
    Other Options:
     -h, --help     output usage information and exit
     -q, --quiet    no error output, just nonzero return if KEY/VALUE missing
     -v, --verbose  verbose output, including VALUE contents when applicable
     -w, --wow64    access 64 bit registry view (ignored on 32 bit Windows)
     -W, --wow32    access 32 bit registry view (ignored on 32 bit Windows)
     -V, --version  output version information and exit
    KEY is in the format [host]\prefix\KEY\KEY\VALUE, where host is optional
    remote host in either \\hostname or hostname: format and prefix is any of:
      root     HKCR  HKEY_CLASSES_ROOT (local only)
      config   HKCC  HKEY_CURRENT_CONFIG (local only)
      user     HKCU  HKEY_CURRENT_USER (local only)
      machine  HKLM  HKEY_LOCAL_MACHINE
      users    HKU   HKEY_USERS
    You can use forward slash ('/') as a separator instead of backslash, in
    that case backslash is treated as an escape character.
    You can also supply the registry path prefix /proc/registry{,32,64}/ to
    use path completion.
    Example:
      regtool list '/HKLM/SOFTWARE/Classes/MIME/Database/Content Type/audio\\/wav'

DESCRIPTION

The regtool program allows shell scripts to access and modify the Windows registry. Note that modifying the Windows registry is dangerous, and carelessness here can result in an unusable system. Be careful.

The -v option means "verbose". For most commands, this causes additional or lengthier messages to be printed. Conversely, the -q option supresses error messages, so you can use the exit status of the program to detect if a key exists or not (for example).

The -w option allows you to access the 64 bit view of the registry. Several subkeys exist in a 32 bit and a 64 bit version when running on Windows 64. Since Cygwin is running in 32 bit mode, it only has access to the 32 bit view of these registry keys. When using the -w switch, the 64 bit view is used and regtool can access the entire registry. This option is simply ignored when running on 32 bit Windows versions.

The -W option allows you to access the 32 bit view on the registry. The purpose of this option is mainly for symmetry. It permits creation of OS agnostic scripts which would also work in a hypothetical 64 bit version of Cygwin.

You must provide regtool with an action following options (if any). Currently, the action must be add, set, check, get, list, remove, set, or unset.

The add action adds a new key. The check action checks to see if a key exists (the exit code of the program is zero if it does, nonzero if it does not). The get action gets the value of a key, and prints it (and nothing else) to stdout. Note: if the value doesn't exist, an error message is printed and the program returns a non-zero exit code. If you give -q, it doesn't print the message but does return the non-zero exit code.

The list action lists the subkeys and values belonging to the given key. With list, the -k option instructs regtool to print only KEYs, and the -l option to print only VALUEs. The -p option postfixes a '/' to each KEY, but leave VALUEs with no postfix. The remove action removes a key. Note that you may need to remove everything in the key before you may remove it, but don't rely on this stopping you from accidentally removing too much.

The get action prints a value within a key. With the -b option, data is printed as hex bytes. -n allows to print the data as a typeless stream of bytes. Integer values (REG_DWORD, REG_QWORD) are usually printed as decimal values. The -x option allows to print the numbers as hexadecimal values.

The set action sets a value within a key. -b means it's binary data (REG_BINARY). The binary values are specified as hex bytes in the argument list. If the argument is '-', binary data is read from stdin instead. -d or -i means the value is a 32 bit integer value (REG_DWORD). -D means the value is a 32 bit integer value in Big Endian representation (REG_DWORD_BIG_ENDIAN). -Q means the value is a 64 bit integer value (REG_QWORD). -s means the value is a string (REG_SZ). -e means it's an expanding string (REG_EXPAND_SZ) that contains embedded environment variables. -m means it's a multi-string (REG_MULTI_SZ). If you don't specify one of these, regtool tries to guess the type based on the value you give. If it looks like a number, it's a DWORD, unless it's value doesn't fit into 32 bit, in which case it's a QWORD. If it starts with a percent, it's an expanding string. If you give multiple values, it's a multi-string. Else, it's a regular string.

The unset action removes a value from a key.

The load action adds a new subkey and loads the contents of a registry hive into it. The parent key must be HKEY_LOCAL_MACHINE or HKEY_USERS. The unload action unloads the file and removes the subkey.

The save action saves a subkey into a registry file. Ideally you append the suffix .reg to the file so it gets automatically recognized as registry file by Windows Explorer.

The restore action restores a registry subkey from a file saved via the aforementioned save action.

By default, the last "\" or "/" is assumed to be the separator between the key and the value. You can use the -K option to provide an alternate key/value separator character.

COPYRIGHT

Copyright © Cygwin authors

Permission is granted to make and distribute verbatim copies of this documentation provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.