c++ - 什么是 isWindowsServer API for VS 2008 编译器的等价物

标签 c++ visual-studio visual-c++

在我们使用 VS 2017 编译器编译的产品中,我们使用 IsWindowsServer API 检查代码是否在服务器版本操作系统中运行,然后采取一些措施。出于某种原因,我需要将此逻辑导入我们在 VS 2008 编译器上运行的产品的旧版本。此处无法使用 IsWindowsServer API,并给出错误错误 C3861:“strtof”:找不到标识符。那么我可以在这里使用的等效 API 是什么?

最佳答案

IsWindowsServer 本身不是 API。真是<versionhelpers.h>中定义的宏包装 VerifyVersionInfo .这是实现:

#include <windows.h>

bool IsWindowsServer()
{
    OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, VER_NT_WORKSTATION };
    DWORDLONG        const dwlConditionMask = VerSetConditionMask( 0, VER_PRODUCT_TYPE, VER_EQUAL );

    return !VerifyVersionInfoW(&osvi, VER_PRODUCT_TYPE, dwlConditionMask);
}

两个依赖的 API VerSetConditionMask 和 VerifyVersionInfo 应该在与 VS2008 捆绑在一起的 SDK 中可用。

关于c++ - 什么是 isWindowsServer API for VS 2008 编译器的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069371/

相关文章:

c++ - 如何在 C++ 字符串中存储 CTRL-A (0x01)?

c++ - 通过将文本文件发送到标准输入来自动测试 Visual Studio 中的 C++ 控制台应用程序?

asp.net - Visual Studio 被 javascript 中的服务器代码搞糊涂了

c++ - 如何创建模板类型迭代器的 STL 对象?

c++ - 看似很好的 delete[] 程序崩溃

c++ - 成员模板和继承

c++ - 从函数返回对指针的引用与返回指针相同?

c++ - 您能否使用 C++ 编写可在 Windows 和 Linux 操作系统上运行的 GUI?

visual-studio - 完成后从关闭程序停止Visual Studio

c++ - MSVC++ 6.0 : C1509 “Too many exception handler states in function”