Вы можете проверить это с помощью API GetProductInformation , для этого просто проверьте параметр pdwReturnedProductType для одного из значений ядра сервера.
Пример кода (Delphi, но не сложно перевести на c (++)):
function IsServerCore: Boolean;
var
osvi: OSVERSIONINFOEX;
dwPT: DWORD;
begin
ZeroMemory(@osvi, SizeOf(osvi));
osvi.dwOSVersionInfoSize := SizeOf(osvi);
Win32Check(GetVersionEx(osvi));
Win32Check(GetProductInfo(osvi.dwMajorVersion, osvi.dwMinorVersion,
osvi.wServicePackMajor, osvi.wServicePackMinor, dwPT));
case dwPT of
PRODUCT_DATACENTER_SERVER_CORE,
PRODUCT_STANDARD_SERVER_CORE,
PRODUCT_ENTERPRISE_SERVER_CORE,
PRODUCT_WEB_SERVER_CORE,
PRODUCT_DATACENTER_SERVER_CORE_V,
PRODUCT_STANDARD_SERVER_CORE_V,
PRODUCT_ENTERPRISE_SERVER_CORE_V,
PRODUCT_STORAGE_EXPRESS_SERVER_CORE,
PRODUCT_STORAGE_STANDARD_SERVER_CORE,
PRODUCT_STORAGE_WORKGROUP_SERVER_CORE,
PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE,
PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE,
PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE,
PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: Result := True
else
Result := False;
end;
end;