registry : Java Glossary

*0-9ABCDEFGHIJKLMNOPQRSTUVWXYZ (all)
The CurrCon Java Applet displays prices on this web page converted with today’s exchange rates into your local international currency, e.g. Euros, US dollars, Canadian dollars, British Pounds, Indian Rupees… CurrCon requires an up-to-date browser and Java version 1.8, preferably 1.8.0_131. If you can’t see the prices in your local currency, Troubleshoot. Use Firefox for best results.

no registry!  registry
The registry is the master database file in Windows operating systems that keeps tracks of everything about every installed program.
Registry Corruption Java
RMI Registry How Java finds its executables
Backing Up Manipulating
Physical Location Poking With JNI
Exploring Second Stupidest Idea
Useful Locations Books
The Auxiliary App Paths Links

Registry Corruption and Repair

The structure of the registry is complex. It tends to become corrupted and filled with deadwood. An entire industry has grown up to fix the damage. For most people repairing such damage with as little fuss as possible is all they ever do with the registry. For that see the entry on registry fixers

RMI (Remote Method Invocation) Registry

Java RMI has a program called the registry (no relation to the Windows registry) for tracking remote objects. However, most people use the term registry to refer to a file in Windows called the registry.

Backing Up The Registry

Ordinary backup programs cannot deal with backing up or restoring the registry since it is always locked and in use. All you can do is extract the data from it and feed it back transaction by transaction with regedit. Programs like Norton Ghost can backup and restore the entire registry by running under DOS (Disk Operating System) where the registry is not used at all. Ghost is the only way I know of recovering from a fatally damaged registry. You can backup/restore sections of the registry, provided the registry as a whole is intact, with code like this (which saves the SET environment): You can spawn such regedit code with Runtime.exec. In W2K, XP, W2003, Vista, W2008, W7-32, W7-64, W8-32, W8-64, W2012, W10-32 and W10-64 it dumps the file in UTF-16LE (little endian) encoding with an FFFE BOM (Byte Order Mark). If you try to read it with an ordinary 8-bit editor it will show every second character as null.

Physical Location

The following information is not much practical use since you cannot edit the registry or even back it up with conventional tools. I tell you this just to satisfy your curiosity and so you can get a rough idea how fat your registry has become:

Exploring The Registry

If you dig around the registry with regedit, you will see terrifying data values to keys such as {098f2470-bae0-11cd-b579-08002b30bfeb}. These are not encoded data. These are just random strings of gibberish, hopefully unique, used to index some other part of the tree. All links are symbolic and these are the sort of names used when a human has not taken the trouble to assign an intelligible name to the link, or when the name of the link is effectively a digest. Sometimes you will find a link to a link using this cumbersome mechanism. Unfortunately you cannot change them to intelligible names since they are also hard coded into various programs.

You can learn quite a bit about how the registry handles java just by searching for strings like java, JavaSoft, java.exe, javaw.exe, javaws.exe, jnlp, jar, jdk, jre, J:\Program Files\java\jdk1.8.0_131\ or 1.8.0.

You could use regedit to look at HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft to see this as a small tree of fields. If it is damaged and you don’t have a backup, you could patch it field by field, or use the text above to create phony registry section backup, convert it to the encoding your version of regedit expects and restore that and then fine tune the result.

Alternatively, if the registry is a real mess, you could uninstall all java JREs (Java Runtime Environments) and JDK (Java Development Kit) s, delete all the files for the JREs and JDK s, delete the HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft registry tree and start from scratch.

Useful Registry Locations

Useful Registry Locations
Registry Location Use
HKEY_CLASSES_ROOT\Applications has pointers to java.exe and javaw.exe. You may find they are screwed up pointing to old versions that no longer exist. This is where the Java Control Panel keeps track of which java.exe to use. This sets up the shell command launchings.
HKEY_CLASSES_ROOT\CLSID\{CAFEEFAC-…} misc Java entries.
HKEY_CLASSES_ROOT\jarfile\shell\open\command controls the association for *.jar files. I like to set mine up to java.exe not javaw.exe so I can see the error messages. I change it to: "C:\Program Files\java\jre1.8.0_131\ \bin\java.exe -jar %1" %*.
HKEY_CLASSES_ROOT\JavaWebStart.isInstalled Is JWS (Java Web Start) installed?
HKEY_CURRENT_USER\ENVIRONMENT User-specific set environment
HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\mindprod\replicator where the package name is com.mindprod.replicator. One place whereJava persists User Preferences.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs\Sun Microsystems where installers track registration information about each product.
HKEY_LOCAL_MACHINE\SOFTWARE\Javasoft Are of most interest to Java programmers. Points to where the JDK s, JRE (Java Runtime Environment) s and Java plugins are installed.
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion should be set to 1.8, the version of the currently active JDK/JRE. Note you need both the generic 1.8 and specific 1.8.0 entries.
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs\com\mindprod\replicator where the package name is com.mindprod.replicator. Where Java persists System Preferences.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows\CurrentVersion\Uninstall tracks all the uninstallable programs, including the JDK and JRE. To get rid of a program from the registry that has already been uninstalled, just delete the key and all its subkeys in this section.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\JAVA_SUN\SELECT Where Microsoft’s browser, Internet Explorer, keeps track of which version of Java it uses.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\javaws.exe where javaws.exe is installed. See below for how this auxiliary path mechanism works.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders where installers, including the JRE and JDK installers, keep track of what is already installed. If these entries point to applications that no longer exist, they can block reinstallation.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products autorun where the registry tracks which programs are autostarted on boot.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run dlls DLL (Dynamic Link Library) s that are started on boot
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs This section tracks shared DLL s. Often these point to shared files (usually DLLs (Dynamic Link Libraries) but not always) that are no longer there. You can delete such entries. Registry cleaning utilities do this automatically.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment system wide set environment
HKEY_USERS\user\Software\JavaSoft\Prefs\com\mindprod\replicator where the package name is com.mindprod.replicator. Another place where Java persists User Preferences. Does not appear in Vista. If you have turned off legacy 8.3 filenames, instead of user, the group will have a long gibberish name.

Note the registry is not stored purely alphabetically: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG.

The Auxiliary Registry App Paths

The registry also acts like an auxiliary path to help find the executable to load. There are a pair of entries: one to define the executable and one to define the start directory:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe
(default) = X:\Program Files (x86)\firefox\firefox.exe

path = F:\Program Files (x86)\firefox\

These entries tell windows where to find various programs as if they were on the path. By inserting an entry here for your exe, you make it globally accessible. You could for example give a French name for the user that mapped onto an English program name, or give a program several aliases, one key for each alias, all pointing to the same program.

If you use tcc/TakeCommand, you can just type the name of any program in this auxiliary list with or without the .exe to invoke it. However, the default cmd.exe command processor will not do this for you. However, if you invoke the program on the with NT and W2K start ⇒ run or Vista, W2008, W7-32, W7-64, W8-32, W8-64, W2012, W10-32 and W10-64 start ⇒ all programs ⇒ accessories ⇒ run, the program will launch.

It is a good idea to prune this region of the registry of deadwood. It gets filled with references to non-existent programs during failed installs and uninstalls.

Installers are sometimes too timid/stupid to fix broken entries. I found, for example, that Opera would not launch properly when I typed Opera on the command line. I discovered a registry entry in this region was pointing it to an old version of Opera that was no longer installed. I patched the entry with regedit to point to the new name and off it went. Registry cleaners will automatically purge broken entries of this type, but they won’t repair them. Sometimes purging is enough. The next install might recreate it.

Java and the Registry

Java.exe looks in the registry to decide which version of Java to use. It can help to delete or replace the file C:\WINNT\System32\java.exe which is often out of date.

It is wise to take a snapshot of the java portion of the registry. Then when it is later inevitably damaged, you can restore it. Without such a backup you must either manually patch the registry or uninstall all your JDK s, JRE s, JWS

REM export Java region of registry
regedit /E C:\ENV\java.reg "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft"
REM restore Java region of registry
C:\ENV\java.reg
The exported registry is often in 16-bit Unicode. You may have to translate it to your native encoding if you want to view it. You don’t have to view it unless you are curious. If

How Java Finds its Executables

Just to keep you on your toes, Java uses three differerent mechanisms to find its executables.
  1. Java Web Start uses the registry auxiliary Apps Path technique. You will find an entry in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths for javaws.exe pointing it to the javaws.exe it will use if you just type javaws on the command line where there is no javaws.exe on the path.
  2. java.exe uses a different mechanism that uses an extra C:\Windows\System32\java.exe (which is on the path) that examines the registry to find the currently active JRE and hence the official copy of java.exe.
  3. Just for variety, javac.exe just uses the plain old path to find the executable, though, of course, you are free to set up an App Paths entry manually with regedit.

Manipulating the Registry

Staring with  Java version 1.4 you can store information in the Windows registry in a platform-independent way using the Preferences class. On other platforms this is implemented sanely with an SQL (Standard Query Language) database.

The Preferences feature of Java uses the Windows registry to store configuration information. This does not give you general access to the registry however. I take it Sun was too cheap to buy/write some disk-based BTree code or a simple SQL engine to handle this with ordinary files that could be easily backed up and restored.

For earlier JDK ’s IBM (International Business Machines) ’s JConfig does not support registry operations because JConfig is cross platform and Windows is the only OS (Operating System) with this idiotic contraption.

Nodes in the registry can have an optional name/key for direct lookup and an optional value. For nodes with keys, accessible via direct name lookup, the associated value is called the data. For nodes without keys, only accessible as a subnodes of some other node, the associated value is called a value. Inserting a node without a key is referred to as inserting a value.

If you are developer, a more robust technique is to store your data in C:\Documents and Settings\User\Application Data\ in ordinary flat files.

You can span a copy of reg.exe or redit.exe for quick and dirty changes.

Poking The Registry With JNI (Java Native Interface)

If you want to probe or poke the registry, you will need some JNI that implements some or all of Microsoft’s registry API (Application Programming Interface). Finding the documentation on how it works can take a while. Look for HKEY_TYPE which defines the various sorts of value a registry key can have. You will need to implement SHGetValue and SHSetValue as well as some of the 18 other methods. Trust Microsoft to make it is complicated as possible. If you need such a JNI interface to the registry, I am available to create you light weight, special purpose registry poker for a fee.

JNIWrapper Winpack $74.00 USD does many more native tweakings that access the registry.

Registry: Second Stupidest Idea In Computing

The registry is the second stupidest idea in computing. (DLL hell was the worst, both compliments of Microsoft.) With the registry there is a single, shared, central file that all applications use to store their configuration data in a convenient hierarchical format. The file has a complex delicate structure, which means you are putting all your eggs in one basket. If it becomes corrupt, you lose the configuration information for all your applications. Because it is so central to the OS, normally you can’t even restore it as a lump from backup, without rebooting to DOS first. The registry becomes a performance bottleneck since different apps must wait in line for access to it. There are so many negative consequences of having a central registry implemented as a single file, that I have a hard time believing the true motives for creating the registry were not sinister. I suspect these were the true motives:
  1. Microsoft lock in

    To make it more difficult to port Windows apps to operating systems without a registry. Microsoft wants to lock in developers.
  2. Piracy

    To make it more difficult to backup and restore individual applications. You have to totally reinstall them from the master CD (Compact Disc). This discouraged piracy in the days before the CD burner. As a side effect, the registry harms legitimate users trying to restore a corrupted application or trying to move it to a different partition. To move an application to a different drive or partition, you must uninstall it, reinstall it, then manually reenter all the configuration options, if you can remember them! If a customer has lost the key for an app or misplaced the master CD, or can’t figure out which key goes with which disk, he can’t even reinstall. He has to buy a new copy of the application. Hmmm.
  3. Cover Up for Incompetence

    To make it necessary to reinstall Windows every once in a while. If anything in the registry goes, novice users have little hope but to reformat the disk and start over and re-install Windows and all the applications. An ex Microsoft employee told me that Microsoft coders do this as a matter, of course, each month. The registration keys are designed to be easy to lose and hard to match with the corresponding CD. Legitimate owners of software end up rebuying unnecessary copies of the products. Registration keys have no effect on pirates; they only harm legitimate users. Branding, in contrast, would deter pirates.
    installer for more discussion
  4. Intercorporate Spying and Warfare

    To make it easier to snoop on and meddle with your competitor’s configurations and file associations. In future secure computer architectures, each application will run in an airtight sandbox where it cannot snoop on or meddle with the files or programs of its competitors. The CPU (Central Processing Unit) will have a dark room where encrypted code is expanded using the CPU ’s private key. The code can be executed, but not examined by anyone. This will put an end to piracy. There will be no more need for the idiotic registry. The only central unified registry needed will be a simple list of apps and where they are. The slapdash extension association system will be replaced with a secure program association set for each file.
Vendors should proudly advertise when their programs refrain from using the registry. I suggest something like to the no-all-eggs-in-one-basket logo.

How could the registry be fixed. It need three major changes:

  1. Separation

    The OS assigns each application a hive — a mini registry. Applications can’t look outside their hive, except read-only access to a deliberately public central hive. Only the app itself looks at its hive. Normally, not even the OS peeks inside an application hive. As a result, the registry ceases to be a performance bottleneck. It ceases to contain material irrelevant to the current purpose. It no longer requires contention to access it.
  2. Placement

    The hive for an app lives in the directory for that app. If the hive becomes corrupted, only that app is harmed. If that app is backed up and restored to any other machine, partition or directory it still works. The hive has no idea where it is. Microsoft has to give up the idea of punishing legitimate application migration and restoration.
  3. Robustness Through Automatic Restoration

    There is a mechanism to publish a few public facts, e.g. the mime types of files the app is willing to display, edit, print… (An app on its own cannot commandeer a MIME (Multipurpose Internet Mail Extensions) type from all other apps. It can merely get it self added to list of potential associations). This structured public information is replicated centrally. If for some reason the central registry becomes corrupt and loses these facts, the O/S can get them back by asking any hives it finds lying about. It can thus recreate the damaged central hive from the public portion of the application hives. The OS is the only entity that knows where an app is. Apps themselves don’t know where physically they are.

Books

book cover recommend book⇒Windows Registry Troubleshootingto book home
by Mike Halsey, Andrew Bettany 978-1-4842-0993-6 paperback
birth 1970-03-27 age:48 978-1-4842-0992-9 eBook
publisher Apress B00SMFP7VW kindle
published 2015-04-30
This is an introductory book on the registry.
Australian flag abe books anz abe books.ca Canadian flag
German flag abe books.de amazon.ca Canadian flag
German flag amazon.de Chapters Indigo Canadian flag
Spanish flag amazon.es Chapters Indigo eBooks Canadian flag
Spanish flag iberlibro.com abe books.com American flag
French flag abe books.fr amazon.com American flag
French flag amazon.fr Barnes & Noble American flag
Italian flag abe books.it Nook at Barnes & Noble American flag
Italian flag amazon.it Kobo American flag
India flag junglee.com Google play American flag
UK flag abe books.co.uk O’Reilly Safari American flag
UK flag amazon.co.uk Powells American flag
UN flag other stores
Greyed out stores probably do not have the item in stock. Try looking for it with a bookfinder.
book cover recommend book⇒Microsoft Windows Registry Guideto book home
by Jerry Honeycutt 978-0-7356-2218-0 paperback
publisher Microsoft 978-0-7356-3735-1 eBook
published 2005-09-14 B0043M58TY kindle
Covers XP registry, but not Vista.
Australian flag abe books anz abe books.ca Canadian flag
German flag abe books.de amazon.ca Canadian flag
German flag amazon.de Chapters Indigo Canadian flag
Spanish flag amazon.es Chapters Indigo eBooks Canadian flag
Spanish flag iberlibro.com abe books.com American flag
French flag abe books.fr amazon.com American flag
French flag amazon.fr Barnes & Noble American flag
Italian flag abe books.it Nook at Barnes & Noble American flag
Italian flag amazon.it Kobo American flag
India flag junglee.com Google play American flag
UK flag abe books.co.uk O’Reilly Safari American flag
UK flag amazon.co.uk Powells American flag
UN flag other stores
Greyed out stores probably do not have the item in stock. Try looking for it with a bookfinder.
Ace Utilities: registry repair and broken shortcut deleter
Control Panel
defragger
extension associations editor student project by poking the registry
JNA
JNIWrapper Winpack
JRegistryKey: poke registry without JNIJNI
JVM Manager: to manage JVMJVM registry entries
NTRegopt registry compactor
PageDefrag
Preferences
Properties
reg files
registry cleaner
Registry Poker: Student Project
Regmon: (free program to monitor what programs are doing to the registry)
reinstaller: student project
reinstalling
Review of Registry Repair Utilities
TCP Optimizer

This page is posted
on the web at:

http://mindprod.com/jgloss/registry.html

Optional Replicator mirror
of mindprod.com
on local hard disk J:

J:\mindprod\jgloss\registry.html
Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

IP:[65.110.21.43]
Your face IP:[18.226.166.106]
You are visitor number