3

正如我们所知,Windows Server 2016 带有在操作系统安装时间期间安装桌面体验的选项,如果这样做,即使安装了桌面体验,下面的程序片段也无法检测到。

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 变量不包含 35 的桌面体验功能 ID。

这是 Windows Server 2016 中的预期行为吗?如果不是,我们如何在 WIndows Server 2016 中获得此值?

4

1 回答 1

1

此MSDN 链接中的注册表项仍然有效,即使其他方法在 2016 年不再有效。

如果要从注册表中提取值,它位于以下位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationType

对于 2016 桌面体验,REG_SZ 值为“服务器” 对于 2016,该值为“服务器核心”

Windows 2016 不认为桌面体验是一项功能,因为它不能再动态更改。

于 2017-12-01T01:37:15.150 回答