What the per-user registration writes
The registry entries that regsvr32 /n /i:user writes for Wkl.Forms.ObjectLibrary.dll, what regsvr32 /u /n /i:user
removes, and which similar entries belong to Office instead. Use it to check that a PC is clean after unregistering, or
complete after registering. The steps themselves are in
How to: Install the released package.
Registry views
A 32-bit and a 64-bit registration are separate for the class ids and shared for the rest:
| Part | 32-bit (x86 DLL) | 64-bit (x64 DLL) |
|---|---|---|
| Classes | HKCU\Software\Classes\WOW6432Node\CLSID\{class id} | HKCU\Software\Classes\CLSID\{class id} |
| ProgIDs | HKCU\Software\Classes\WklForms.<Name> (one key for both) | same key |
| Type library | HKCU\Software\Classes\TypeLib\{A37D549E-FCD0-48EC-8B14-C7323B747E4F}\<version>\0\win32 | the same key, subkey 0\win64 |
<version> is the release x.y in hexadecimal: 1.56 is 1.38. A program of either bitness that reads the 32-bit
registry view (RegistryView.Registry32) sees the WOW6432Node keys as CLSID.
What registering writes
| Key | Values and subkeys |
|---|---|
CLSID\{class id}, one per class | default value: description; InprocServer32 (default value: full path of the DLL, ThreadingModel = Apartment); ProgID; TypeLib (the library id); Version (x.y of the release) |
| the same, for each control | additionally Control, MiscStatus (and MiscStatus\1), Implemented Categories with the categories Control, safe for scripting {7DD95801-9882-11CF-9FA9-00AA006C42C4} and safe for initializing {7DD95802-9882-11CF-9FA9-00AA006C42C4}, and ToolboxBitmap32 where the control has a toolbox picture |
WklForms.<Name>, one per class | default value: description; CLSID = the class id |
TypeLib\{A37D549E-...}\<version> | name „WKL Forms x.y Object Library“; 0\win32 or 0\win64 = path of the DLL; FLAGS; HELPDIR = folder of the DLL |
Interface\{interface id}, one per interface of the type library | written by Windows (RegisterTypeLibForUser) with the type library |
Release 1.60 registers 49 classes, 24 of them controls, in each bitness. Registering also removes every other version of the type library for the same bitness, so only one version stays registered per bitness. A database or ACCDE built against an older release still opens: Access binds the reference by the library id and the major version (1), so it takes the newer registered version. The opposite - a database built against a newer release on a PC with an older one - is not supported: it can break (MISSING reference, error 459) and is not guaranteed where it seems to work (see „Order of an update“ in How to: Deploy an application with WKL controls to user PCs).
What unregistering removes
regsvr32 /u /n /i:user with the DLL of one bitness removes:
- the
CLSIDkeys of its classes in the view of its bitness; - the ProgID keys, except those whose class is still registered in the other view (unregistering x86 leaves the ProgIDs of a remaining x64 registration);
- the type library version of the DLL for its bitness, with the
Interfacekeys Windows wrote for it (UnRegisterTypeLibForUser).
Unregister both bitnesses to remove everything. Nothing is written to HKEY_LOCAL_MACHINE in either direction.
Entries that do not belong to the registration
These remain after unregistering and are not a sign of an incomplete removal:
- Type libraries named „WKL Forms x.y Object Library“ under other library ids, whose
0\win32points to%TEMP%\VBE\WklForms.exdor%APPDATA%\Microsoft\Forms\WklForms.exd. Office writes them as a cache when VBA or a UserForm loads the controls; the registration neither writes nor removes them. Office creates them again when needed. - The Access add-in (
HKCU\Software\Microsoft\Office\Access\Menu Add-Ins\WKL ...) is written by the add-in's own installation (tools\install-addin.ps1), not by the registration. - WKL Office JSON (
WklJSON.JDoc, its own type library „WKL Office JSON 1.0“) is a library of its own with its own registration; see its documentation.