RegEdit Command-Line Options

Even though I’ve been talking about using RegEdit as a standard Windows application, it also supports several command-line options that let you to import and export Registry data from scripts, batch files, or the command line. Both switches run RegEdit as a background process. The export process is quiet; the import process displays a completion dialog, just as it does when you use the RegistryImport Registry File...command.

Exporting Data

You tell RegEdit to export data with the /e command-line switch. The command looks like this:

regedit  /e targetFile  [registryPath]
targetFile

This specifies where RegEdit should write its data. You can specify any path, filename, and extension so long as it’s not a UNC path.

registryPath

This optional parameter tells RegEdit what to export. If you omit it, the entire Registry is exported. If you specify a key, that key and all its subkeys are exported. The path must be a complete path, including a root key, and you must spell out the name of the root key.

If you want to dump the contents of HKLM\Software\metrowerks to a file named warrior.reg, you can do it like this:

regedit /e c:\dist\hklm\warrior.reg HKEY_LOCAL_MACHINE\SOFTWARE\metrowerks

Importing Data

The simplest way to import data using RegEdit is to specify the name of the file you want imported on the command line, like this:

regedit warrior.reg

RegEdit happily imports the file’s entire contents and presents a confirmation dialog when done. Alternatively, you can force RegEdit to replace the entire contents of the Registry with a .REG file. RegEdit won’t replace the keys that are dynamically built (such as HKLM\HARDWARE and HKDD), but everything else is fair game, so make sure the file you’re loading has a complete set of Registry contents and that you have a current backup. To invoke this mode, use the /c switch, like this:

regedit /c whole-enchilada.reg

When you use the /c switch, you may get an odd dialog box accusing you of tampering with the product type. Windows NT 4.0 keeps a pair of threads running in the background; these threads do nothing more than watch HKLM\System\Setup\SystemPrefix and HKLM\System\CurrentControlSet\Control\ProductOptions\ProductType for changes and reverse any changes that occur. When you reload the entire Registry, the threads notice and present the warning dialog box because they’re not smart enough to tell that the value isn’t any different--just that someone tried to change it. (For more information on these threads and why they’re there, see Andrew Schulman’s article at ftp://ftp.ora.com/pub/examples/windows/win95.update/ntnodiff.html .)

Get Managing The Windows 2000 Registry now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.