如何以编程方式检查Windows Server 2016上是否安装了桌面体验

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

在Windows Server 2016中,这是一种预期的行为吗?

如果不是,我们如何在Windows Server 2016中获取此值?

1个回答

1
这个MSDN链接中的注册表键仍然有效,在2016年,即使其他方法不再起作用。
如果您想从注册表中获取值,它位于以下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationType

对于2016桌面体验,REG_SZ值为"Server";对于2016,值为"Server Core"

Windows 2016不认为桌面体验是一个功能,因为它不能在运行时更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接