Absolute confirm on this - went from about a minute to launch to a second or two.
If you have python installed on your system, here's the script I used to remove the keys:
Usage: (all values have reasonable defaults, so just executing the script is fine)
$ clean_sketchup_reg.py -h
usage; clean_sketchup_reg.py [-h] [--path PATH] [--root ROOT]
[--pattern PATTERN] [--verbose VERBOSE]
Sketchup Toolbar cleaner
optional arguments;
-h, --help show this help message and exit
--path PATH registry path
--root ROOT root key
--pattern PATTERN remove pattern
--verbose VERBOSE verbosity
Code:
import _winreg as reg
import re
import sys
import argparse
def get_root_key(name);
try;
key = getattr(reg, name)
return key
except KeyError;
pass
raise ValueError('Root Key "%s" was not found' % name)
class Cleaner(object);
def __init__(self, root, path, pattern);
self.root = reg.ConnectRegistry(None, root)
self.set_path(path)
self.pattern = pattern
def set_path(self, path);
current = self.root
for p in path.split('/');
current = reg.OpenKey(current, p)
self.active_path = current
def clean(self, print_errors=False);
removed = 0
index = 0
while True;
try;
key = reg.EnumKey(self.active_path, index)
if self.pattern.match(key);
try;
reg.DeleteKey(self.active_path, key)
removed += 1
except WindowsError, e;
index += 1
if print_errors;
print 'Failed to remove', key, ';', e.message
else;
index += 1
except WindowsError, e;
return removed
if __name__ == '__main__';
parser = argparse.ArgumentParser(description='Sketchup Toolbar cleaner')
parser.add_argument('--path', type=str, help='registry path', default='Software/Google/Sketchup8')
parser.add_argument('--root', type=str, help='root key', default='HKEY_CURRENT_USER')
parser.add_argument('--pattern', type=str, help='remove pattern', default='^ToolbarsUser(Custom)?\-Bar\d+$')
parser.add_argument('--verbose', type=int, help='verbosity', default=1)
args = parser.parse_args(sys.argv[1;])
root = get_root_key(args.root)
path = args.path
try;
pattern = re.compile(args.pattern)
except Exception, e;
raise ValueError('Invalid pattern ; ' + e.message)
cleaner = Cleaner(root, path, pattern)
result = cleaner.clean(args.verbose >= 2)
if args.verbose >= 1;
print 'removed', result, 'keys'
Edit: Obligatory disclaimer, use at your own risk. I've tested it on my system and found no issues.
You can also use this script to clean webdialog entries:
clean_sketchup_reg.py --pattern "^WebDialog_.*$"