Your self-answer gave me an idea. It seems your main concern with the registry fix is a user accidentally editing/deleting other things. And rightfully so...
Since you already have Python installed you can script the edit, so the user never even needs to understand what is really happening. They just need to run the script.
It does need to be run under elevated privileges however, just as regedit would, with ArcGIS not currently running.
This should work for any 10.x version of ArcGIS in Python 2.7:
import arcpy
# This is renamed to winreg in Pyhton 3.x
import _winreg
dockname = 'ArcToolbox'
# The sub (minor?) version is not used in the registry path
# i.e. 10.2.1 is still just 10.2
arcgisver = '.'.join(arcpy.GetInstallInfo()['Version'].split('.')[:2])
regpath = r'Software\ESRI\Desktop{0}\ArcMap\DockingPaneLayouts\panestate'
regpath = regpath.format(arcgisver)
if __name__=='__main__':
panestates = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
regpath, 0, _winreg.KEY_ALL_ACCESS)
k = 0
pane = None
try:
while True:
p = _winreg.EnumKey(panestates,k)
pkey = _winreg.OpenKey(panestates,p)
try:
ptitle = _winreg.QueryValueEx(pkey,'Title')[0]
pkey.Close()
if ptitle == dockname:
pane = p
break
except WindowsError:
pass
k += 1
except WindowsError:
pass
if pane is not None:
_winreg.DeleteKey(panestates,pane)
print 'Reset {0} docking panel'.format(dockname)
else:
print "Couldn't find {0} docking panel key".format(dockname)
panestates.Close()