Hey Michael,
Is our scenario, where one part runs in system mode and another part in user mode, possible?
This, this is possible, you just need to change the way you're using the CheckAndSavePKey() function. Specifically you need to use the "TA_SYSTEM" flag instead of the "TA_USER" flag. So, in C++ this would look something like this:
HRESULT hr = CheckAndSavePKey(L"ABCDE-FGHIJ-KLMNO-...", TA_SYSTEM);
In C# it would look like this:
bool isValid = TurboActivate.CheckAndSavePKey("ABCDE-FGHIJ-KLMNO-...", TurboActivate.TA_Flags.TA_SYSTEM);
(Other programming languages follow a similar theme).
What doing "TA_SYSTEM" does is it stores the activation files on a system-wide level instead of a user-wide level (like you were using before). That is, the user app and the system app will see the exact same activation data.
Does this make sense?