如何以编程方式检查Windows Server 2016上是否安装了桌面体验
How to programmatically check if the desktop experience is installed or not on Windows Server 2016
正如我们所知,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,它是35。
这是Windows Server 2016的预期行为吗?
如果不是,我们如何在Windows Server 2016中获得此值?
这个MSDN链接中的注册表项仍然有效,即使其他方法在2016年不再工作。
如果您想从注册表中提取值,它位于以下位置:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionInstallationType
对于2016桌面体验,REG_SZ值为"服务器";2016年的值是"服务器核心"
Windows 2016不认为桌面体验是一个功能,因为它不能再在飞行中改变。
相关文章:
- 检查是否安装了 windows10 C++
- OpenCV 检查计算机上是否安装了视频编解码器 (C++)
- 导出(安装)的 cmake 目标是否可分发?
- 是否可以在 Azure 应用服务中安装 C++ 编译器
- Qt安装程序框架:检测是否安装了VC++可再发行组件
- 如何检查应用程序是否安装了 jni?
- 是否可以为 Visual Studio Code 安装多个 CMake 扩展?
- 是否可以简化此方法以安装和导出基于 CMake 的项目?
- 安装 GCC 7.1 是否会在标准库中包含 std::is_base_of_v
- 检测是否安装了Office 365
- POPEN 可以找出是否安装了某些应用程序吗?
- 使用MsiGetProductInfo检查是否安装了Microsoft Word
- 确定命令行程序是否C++安装
- 将 Python 嵌入到C++应用程序中,如果是否安装了 python(在 Windows 上)
- 我是否安装错误了 pqxx
- 另一种检查应用程序是否安装在MAC OS X上的方法
- 检查是否安装了adb
- 通过c++判断一个程序是否安装在Linux中
- 如何以编程方式检查Windows Server 2016上是否安装了桌面体验
- 如何检查是否安装了libc++