diff -rup src/sav/GetVmId.cpp src/GetVmId.cpp --- src/sav/GetVmId.cpp 2021-04-27 13:50:51.000000000 +0000 +++ src/GetVmId.cpp 2022-02-03 19:43:53.684999800 +0000 @@ -46,11 +46,24 @@ void ComInit(void) EOAC_STATIC_CLOAKING, NULL); assert(hRes == 0); - hRes = CoCreateInstance(CLSID_LxssUserSession, + // First try with COM server in lifted WSL service + hRes = CoCreateInstance(CLSID_WslService, NULL, CLSCTX_LOCAL_SERVER, - IID_ILxssUserSession, + IID_IWSLService, (PVOID *)&wslSession); + + + // Now try with COM server in system WSL service + if (FAILED(hRes)) + { + hRes = CoCreateInstance(CLSID_LxssUserSession, + NULL, + CLSCTX_LOCAL_SERVER, + IID_ILxssUserSession, + (PVOID *)&wslSession); + } + assert(hRes == 0); } diff -rup src/sav/LxssUserSession.hpp src/LxssUserSession.hpp --- src/sav/LxssUserSession.hpp 2021-04-27 13:50:51.000000000 +0000 +++ src/LxssUserSession.hpp 2022-02-03 19:45:22.846298200 +0000 @@ -11,14 +11,26 @@ #ifndef LXSSUSERSESSION_H #define LXSSUSERSESSION_H -/* Class identifier */ +// COM IDs for lifted WSL service +static const GUID CLSID_WslService = { + 0xF122531F, + 0x326B, + 0x4514, + { 0x85, 0xAE, 0xDC, 0x99, 0xD3, 0x1D, 0x82, 0x56 } }; + +static const GUID IID_IWSLService = { + 0x50047071, + 0x122C, + 0x4CAD, + { 0x9C, 0x93, 0x94, 0x72, 0x0E, 0xB7, 0x7B, 0x06 } }; + +// COM IDs for system WSL service static const GUID CLSID_LxssUserSession = { 0x4F476546, 0xB412, 0x4579, { 0xB6, 0x4C, 0x12, 0x3D, 0xF3, 0x31, 0xE3, 0xD6 } }; -/* Interface identifier */ static const GUID IID_ILxssUserSession = { 0x536A6BCF, 0xFE04,