在哪里可以找到有关使用Microsoft Windows SLAPI的更多信息?

时间:2011-05-03 21:00:59

标签: c++ winapi

特别是,我试图找出如何使用它来区分Windows的服务器和服务器核心版本。 SLGetWindowsInformation()看起来很简单,但我不知道可用的信息名称。

SLAPI = Software Licensing API

3 个答案:

答案 0 :(得分:1)

也许thisthis会有所帮助。

答案 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;