SSMS Registered Servers–Key not valid for use in specified state
After exporting the registered servers from SQL Server Management Studio’s “Registered Servers window” and then importing the exported list into a new machine. You may encounter the following error if passwords were stored against the servers…
Registered Servers Key not valid for use in specified state. (System.Security)
This is due to the encryption key used to encrypt the passwords being specific to the machine the server details were exported from and it not existing on the new machine.
Even more annoying, this message will pop up once for each server with an issue. Those servers will be absent from the registered servers window in the new machine SSMS.
When I got around to fixing this, the original machine was long gone, so re-exporting the server list without passwords and re-importing it was no longer an option (this would have also have worked).
To solve this problem needed to remove the password from the affected registered servers, once the registered server list is properly populated again I can then simply edit the server properties to put the password back in for each server affected.
This registered server list is populated from an xml file found in the following location on your machine:
**C:\\Users\\{username}\\AppData\\Roaming\\Microsoft\\Microsoft SQL Server\\{sql version}\\Tools\\Shell\\RegSrvr.xml**
On opening this file and examining the XML, the snag was that some servers had been added since the server import. Some of those servers were named the same as the ones causing the error. Scrolling through the XML in Notepad, it was not easy to tell which was which.
To help I went back into the registered server list in SSMS and added a distinct comment to all the servers I could see and exited again to updated the XML file. On opening the file again, I searched for “Password=” in the file and removed the section Password=”jdsalkfjdalksjd”; – where the random text is the password and the xml node was of type ConnectionStringWithEncryptedPassword. I removed the whole password parameter as shown by highlighting.
Note that the password property of the connection string was only removed if the description node shown below did not appear, or was present but had another value not containing the unique text we entered earlier in description fields (in this case the unique text was “**MyMarkerText**”).
**<RegisteredServers:Description type="string">\*\*MyMarkerText\*\*</RegisteredServers:Description>**
- Save the file
- launch SSMS.
The error will not appear and the missing registered servers will be available again. You must now right click and edit the properties of each to manually restore the passwords.