C++ 以编程方式检查是否安装了windows server 2016桌面体验
正如我们所知,Windows Server 2016附带了一个选项,可以在操作系统安装期间安装桌面体验,如果这样做,即使安装了桌面体验,下面的程序片段也无法检测到C++ 以编程方式检查是否安装了windows server 2016桌面体验,c++,windows,window-server,windows-server-2016,C++,Windows,Window Server,Windows Server 2016,正如我们所知,Windows Server 2016附带了一个选项,可以在操作系统安装期间安装桌面体验,如果这样做,即使安装了桌面体验,下面的程序片段也无法检测到 IEnumWbemClassObject* pEnumerator = NULL; hr = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECT ID FROM Win32_ServerFeature"), WBEM_FLAG_F
IEnumWbemClassObject* pEnumerator = NULL;
hr = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT ID FROM Win32_ServerFeature"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
hr = pEnumerator->Next(WBEM_INFINITE,1,&pclsObj,&uReturn);
if(0 == uReturn)
{
break;
}
VARIANT vtProp;
hr = pclsObj->Get(L"ID",0,&vtProp,0,0);
此pEnumerator变量不包含桌面体验功能ID 35
这是Windows Server 2016中的预期行为吗?
如果不是,我们如何在WIndows Server 2016中获取此值?此中的注册表项仍然有效,即使其他方法在2016年不再有效
如果要从注册表中提取值,该值位于以下位置:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationType
对于2016年桌面体验,REG_SZ值为“服务器”
2016年的价值是“服务器核心”
Windows 2016不认为桌面体验是一个特性,因为它不能在飞行中被改变。