特别是,我试图找出如何使用它来区分Windows的服务器和服务器核心版本。 SLGetWindowsInformation()
看起来很简单,但我不知道可用的信息名称。
SLAPI = Software Licensing API
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您不想使用GetProductInfo(),可以调用SLQueryInformationDWORD并为name参数指定Kernel-ProductInfo。返回的值与GetProductInfo():D(至少在我的测试系统上)相同
答案 2 :(得分:0)
您可以使用GetProductInformation API进行检查,只需检查其中一个服务器核心值的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;