программно проверить, установлен ли рабочий стол или нет Windows Server 2016

Как мы знаем, Windows Server 2016 поставляется с опцией установки рабочего стола во время установки ОС. Если это будет сделано, приведенный ниже фрагмент программы не будет обнаружен, даже если установлен Desktop Experience.

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 не содержит идентификатор компонента Desktop Experience, который равен 35.

Это ожидаемое поведение в Windows Server 2016?
Если нет, то как мы можем получить это значение в WIndows Server 2016?

3

Решение

Раздел реестра в этом MSDN Link остается в силе, хотя другие методы больше не работают в 2016 году.

Если вы хотите извлечь значение из реестра, оно находится в следующем месте:

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ InstallationType

Для 2016 Desktop Experience значение REG_SZ равно «Сервер». Для 2016 года значение «Ядро сервера»

Windows 2016 не рассматривает возможности рабочего стола как функцию, поскольку ее уже нельзя изменить на лету.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]