Introducing rdt2 and sdt2 for 32 and 64bit shadow keys

sdt2Some of our customers occasionally ask us if they can migrate their shadow keys using Profile Migrator. Since PM migrates user specific settings and data in user profiles and shadow keys are a machine specific setting this is not the case. However as my colleague Nicholas Dille explains shadow keys cause some trouble during terminal server migrations:

When a server is re-installed, shadow keys are created from scratch in the registry of the server. They also contain a current timestamp which is newer that the timestamp in the profiles of your users. Consequently, whenever a user logs on to the new server, the shadow keys are reapplied to his user profile yet again causing existing values to be overwritten.

As he says the remedy is to use rdt and sdt by Microsoft to set the timestamp of shadow keys to a very early date to prevent their appliance to existing user profiles. There seems to be no official download or support for these tools and no updated versions were released. So here are a few things you need to know if you use these tools:

  • rdt and sdt do not support 64bit terminal servers. They only read and set the 32bit keys.
  • No status messages are given. No information is written about the success or failure of the operation.
  • No error code is provided. The return value of both executables is always 0.
  • Non-existing days like February 31st, 2000 cause sdt to set the date to August 5th, 1612.

rdt and sdt sample usage

As I came across these issues I asked myself, how hard can it be to fix these things? So I took the time to create rdt2 and sdt2 as the successors to the original Microsoft versions and to address the issues above.

  • rdt2 and sdt2 fully support 64bit terminal servers and read and set the date on both 32 and 64bit shadow keys.
  • Status updates and error messages are written to the console.
  • Both executables return valid Windows error codes if something goes wrong.
  • Date parsing is done by the CTime class so that any parseable input will result in a valid timestamp. Any invalid input will be reported to the user.

rdt2 and sdt2 sample usage

Both tools are 32bit Windows command line executables and free to use. You can download them here. Feel free to drop a line if you like the tools or encounter any issues with them.