OP is updated, as I released SysTrayUtil 1.1 which includes the fixes for incorrectly identified programs and ability to use * as CLASSNAME identifier.
In addition, a bug with incorrecly transformed identifiers was fixed. This will probably affect your configuration, @Dave-H. Here is the list of how identifiers were changed (according to the Order value you posted above).
There is additional inner identifier assigned to any tray icon by a program, it's just a number. However, it's a bad idea to rely on these numbers (to identify icons) as programs may use them as they wish. For instance, netshell.dll (which is loaded as a part of explorer.exe and displays network adapters in the tray) re-assigns a new number each time connection is down or up. Instead, I use a combination of EXENAME + CLASSNAME as identifier. But for netshell (explorer:ConnectionsTray identifiers) there is additional EXTRA field which contains hwid if available, so it would be possible to order network adapters separately. This a special case implemented for netshell only.
In other cases, it's impossible to do this. For example, if you have 2 hwinfo32 icons, you can't place any icon in between — SysTrayUtil will always reorder them so hwinfo32 icons will be placed next to each other. But the "number" I told above is still used to order them within the group!! This is why CPU 0 icon is always placed before CPU 1 — it's hwinfo32 has assigned properly ordered numbers for each tray icon. For other programs this may or may not work. However, it's a pretty rare case when a program have multiple tray icons, so I'm fine with this (for now, at least).
I just have an old laptop (because I love old laptops), so I thought it will be a good idea to install XP on it. Apart from that, I didn't use Windows since 2016 or so.