Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
hivexsh(1)			Windows Registry		      hivexsh(1)

NAME
     hivexsh - Windows Registry hive shell

SYNOPSIS
      hivexsh [-options] [hivefile]

DESCRIPTION
     This program provides a simple shell for navigating Windows Registry 'hive'
     files.  It uses the hivex library for access to these binary files.

     Firstly you will need to provide a hive file from a Windows operating sys-
     tem.  The hive files are usually located in "C:\Windows\System32\Config"
     and have names like "software", "system" etc (without any file extension).
     For more information about hive files, read hivex(3).  For information
     about downloading files from virtual machines, read virt-cat(1) and guest-
     fish(1).

     You can provide the name of the hive file to examine on the command line.
     For example:

      hivexsh software

     Or you can start "hivexsh" without any arguments, and immediately use the
     "load" command to load a hive:

      $ hivexsh

      Welcome to hivexsh, the hivex interactive shell for examining
      Windows Registry binary hive files.

      Type: 'help' for help with commands
	    'quit' to quit the shell

      > load software
      software\>

     Navigate through the hive's keys using the "cd" command, as if it contained
     a filesystem, and use "ls" to list the subkeys of the current key.  Other
     commands are listed below.

OPTIONS
     -d  Enable lots of debug messages.  If you find a Registry file that this
	 program cannot parse, please enable this option and post the complete
	 output and the Registry hive file in your bug report.

     -f filename
	 Read commands from "filename" instead of stdin.  To write a hivexsh
	 script, use:

	  #!/usr/bin/hivexsh -f

     -u  Use heuristics to tolerate certain levels of corruption within hives.

	 This is unsafe but may allow to export/merge valid keys/values in an
	 othewise corrupted hive.

     -w  If this option is given, then writes are allowed to the hive (see "com-
	 mit" command below, and the discussion of modifying hives in "WRITING
	 TO HIVE FILES" in hivex(3)).

	 Important Note: Even if you specify this option, nothing is written to
	 a hive unless you call the "commit" command.  If you exit the shell
	 without committing, all changes will be discarded.

	 If this option is not given, then write commands are disabled.

COMMANDS
     add name
	 Add a subkey named "name" below the current node.  The name may contain
	 spaces and punctuation characters, and does not need to be quoted.

	 The new key will have no subkeys and no values (see "setval").

	 There must be no existing subkey called "name", or this command will
	 fail.	To replace an existing subkey, delete it first like this:

	  cd name
	  del

     cd path
	 Change to the subkey "path".  Use Windows-style backslashes to separate
	 path elements, and start with a backslash in order to start from the
	 root of the hive.  For example:

	  cd \Classes\*

	 moves from the root node, to the "Classes" node, to the "*" node.  If
	 you were already at the root node, you could do this instead:

	  cd Classes\*

	 or even:

	  cd Classes
	  cd *

	 Path elements (node names) are matched case insensitively, and charac-
	 ters like space, "*", and "?" have no special significance.

	 "cd .." may be used to go to the parent directory.

	 "cd" without any arguments prints the current path.

	 Be careful with "cd \" since the readline library has an undocumented
	 behaviour where it will think the final backslash is a continuation (it
	 reads the next line of input and appends it).	Put a single space after
	 the backslash.

     close | unload
	 Close the currently loaded hive.

	 If you modified the hive, all uncommitted writes are lost when you call
	 this command (or if the shell exits).	You have to call "commit" to
	 write changes.

     commit [newfile]
	 Commit changes to the hive.  If the optional "newfile" parameter is
	 supplied, then the hive is written to that file, else the original file
	 is overwritten.

	 Note that you have to specify the "-w" flag, otherwise no writes are
	 allowed.

     del Delete the current node and everything beneath it.  The current direc-
	 tory is moved up one level (as if you did "cd ..") after this command.

	 You cannot delete the root node.

     exit | quit
	 Exit the shell.

     load hivefile
	 Load the binary hive named "hivefile".  The currently loaded hive, if
	 any, is closed.  The current directory is changed back to the root
	 node.

     ls  List the subkeys of the current hive Registry key.  Note this command
	 does not take any arguments.

     lsval [key]
	 List the (key, value) pairs of the current hive Registry key.	If no
	 argument is given then all pairs are displayed.  If "key" is given,
	 then the value of the named key is displayed.	If "@" is given, then
	 the value of the default key is displayed.

     setval nrvals
	 This command replaces all (key, value) pairs at the current node with
	 the values in subsequent input.  "nrvals" is the number of values (ie.
	 (key, value) pairs), and any existing values at this node are deleted.
	 So "setval 0" just deletes any values at the current node.

	 The command reads 2 * nrvals lines of input, with each pair of lines of
	 input corresponding to a key and a value to add.

	 For example, the following setval command replaces whatever is at the
	 current node with two (key, value) pairs.  The default key is set to
	 the UTF16-LE-encoded string "abcd".  The other value is named "ANumber"
	 and is a little-endian DWORD 0x12345678.

	  setval 2
	  @
	  string:abcd
	  ANumber
	  dword:12345678

	 The first line of each pair is the key (the special key "@" means the
	 default key, but you can also use a blank line).

	 The second line of each pair is the value, which has a special format
	 "type:value" with possible types summarized in the table below:

	  none		       No data is stored, and the type is set to 0.

	  string:abc	       "abc" is stored as a UTF16-LE-encoded
			       string (type 1).  Note that only 7 bit
			       ASCII strings are supported as input.

	  expandstring:...     Same as string but with type 2.

	  dword:0x01234567     A DWORD (type 4) with the hex value
			       0x01234567.  You can also use decimal
			       or octal numbers here.

	  qword:0x0123456789abcdef
			       A QWORD (type 11) with the hex value
			       0x0123456789abcdef.  You can also use
			       decimal or octal numbers here.

	  hex:<type>:<hexbytes>
	  hex:1:41,00,42,00,43,00,44,00,00,00
			       This is the generic way to enter any
			       value.  <type> is the integer value type.
			       <hexbytes> is a list of pairs of hex
			       digits which are treated as bytes.
			       (Any non-hex-digits here are ignored,
			       so you can separate bytes with commas
			       or spaces if you want).

EXAMPLE
      $ guestfish --ro -i Windows7
      ><fs> download win:c:\windows\system32\config\software software
      ><fs> quit

      $ hivexsh software

      Welcome to hivexsh, the hivex interactive shell for examining
      Windows Registry binary hive files.

      Type: 'help' for help with commands
	    'quit' to quit the shell

      software\> ls
      ATI Technologies
      Classes
      Clients
      Intel
      Microsoft
      ODBC
      Policies
      RegisteredApplications
      Sonic
      Wow6432Node
      software\> quit

SEE ALSO
     hivex(3), hivexget(1), hivexml(1), virt-win-reg(1), guestfs(3),
     <http://libguestfs.org/>, virt-cat(1), virt-edit(1).

AUTHORS
     Richard W.M. Jones ("rjones at redhat dot com")

COPYRIGHT
     Copyright (C) 2009-2010 Red Hat Inc.

     This program is free software; you can redistribute it and/or modify it un-
     der the terms of the GNU General Public License as published by the Free
     Software Foundation; either version 2 of the License, or (at your option)
     any later version.

     This program is distributed in the hope that it will be useful, but WITHOUT
     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FIT-
     NESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
     details.

     You should have received a copy of the GNU General Public License along
     with this program; if not, write to the Free Software Foundation, Inc., 51
     Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

hivex-1.3.24			   2023-11-16			      hivexsh(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hivexsh&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help