CE 6.0 Registry Editor and Default Keys.


I’m setting up a CE 6.0 operating system image that boots with the standard explorer shell (desktop icons, start button etc.) when the image boots I want the task bar to auto-hide and also not be ‘on top’ in the Z order.

To figure out which key this uses I booted an explorer shell, changed the shell settings and then used the remote registry editor (now Target | Remote Tools | Registry Editor) to exmaine the key changes – I also uploaded the changed keys to my desktop.

Here’s how the registy key looks when extracted from the device registry to the desktop.

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\AutoHide]
@=dword:00000001

If I were to copy this registy information to a project registry file within Platform Builder (without the REGEDIT4 header) I would get build errors – the extracted registry format using ‘@’ to denote a default key is not the format that the registry needs for the build system.

Here’s how the registry key needs to look for this to work in the build system.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\AutoHide]
"Default"=dword:00000001

Note the use of the “Default” keyword.

– Mike

Comments (8)

  1. Helge says:

    Great, you’re the first, who publishes a bug, aint you?

  2. mikehall says:

    I wouldn’t call this a bug as such – The Remote Registry Editor exports registry keys in rhe same format as the desktop including the "REGEDIT4" at the top of the file which also needs to be removed before importing the keys into a CE registry.

    This is closer to "information" than a bug.

    – Mike

  3. Mike Dimmick says:

    So what do you do if you need a value named "Default"?

  4. mikehall says:

    There are two ways this is typically handled…

    1. "Default" what? – typically you might see a key like "DefaultKeyLayout" or "DefaultLCID" – which makes it easier for others working on a platform to determine what a key does.

    2. ".DefaultSounds" or ".Default" if you only want to have the word "Default" in the key.

    I prefer the first option, just like variable names, use something that is self documenting.

    – Mike

  5. Mike Dimmick says:

    But what if you’re not in control of the name of the registry value?

    The reason that ‘@’ exists in the registry file format is precisely because it is outside the range of valid value names, so that it does not conflict with any other setting the user might need. I call it a bug that Windows CE’s build system does not support it, instead using a value that a platform developer might need.

  6. mikehall says:

    surely, as the platform developer, you are in control of the registry for your device?

    – Mike

  7. ce_base says:

    Here is your answer.  Windows CE does not really have a concept of default values.  Whenever you store ‘@’ your registry really stores the value name "default".  It is just like any other value, with a string name.

    Why?  Well, why not?  Default values are one bit of Windows cruft that CE did not pick up.

    Sue

  8. ce_base says:

    Oh and let me also mention, I think that the remote registry editor really should properly handle ‘@’.  Our Platform Builder .reg files can handle ‘@’ just fine.  I will log it as a bug.  So there!  It is a bug after all.  🙂

    Sue