Попытка получить версию Windows из кода C - PullRequest
0 голосов
/ 26 сентября 2018

Я работаю над приложением C (не c ++).В основном код находится в файле * .c.Я хочу добавить еще одну функцию в этот файл, чтобы проверить версию ОС Windows, на которой запущено мое приложение.Я пытаюсь использовать функции versionhelper, описанные ниже - https://docs.microsoft.com/en-us/windows/desktop/sysinfo/version-helper-apis. Однако, когда я пытаюсь добавить заголовочный файл ниже, я получаю сообщение об ошибке компиляции, говорящее - не удается открыть исходный файл "VersionHelpers.h" -

 #include <VersionHelpers.h>

Я думаю, это потому, что мой файл - это файл C.Есть ли способ прочитать версию ОС Windows из кода C?(Не C ++)

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

VersionHelpers.h - это просто встроенный заголовочный файл, который выполняет общие проверки с использованием VerifyVersionInfo.Вы можете просто использовать этот API напрямую, который называется C-callable.

Вам также необходимо учитывать тот факт, что функции GetVersion и VerifyVersionInfo подчиняются встроенной версии appcompat.См. Manifest Madness для подробностей.

Конечно, реальный вопрос в том, что вы на самом деле собираетесь делать с этой информацией?ездить на этой езде "тест?Если это так, VerifyVersionInfo - это способ сделать это, и что делает код в VersionHelpers.h.

Это тест "Мне нужна версия для телеметрии или файла журнала"?В этом случае вы, вероятно, захотите использовать GetVersionEx и отключить предупреждение об устаревании.Убедитесь, что вы не принимаете никаких решений времени выполнения на основе значения.Для приложений UWP вы бы использовали AnalyticsInfo .

Является ли это "я проверяю, чтобы проверить, безопасно ли использовать определенный компонент ОС?"Если это так, вероятно, есть лучший способ сделать это, чем проверка ОС.

См. Что такое номер версии?

Заголовок VersionHelpers.h былдобавлен в Windows 8.1 SDK, который поставляется с VS 2013 или более поздней версии.Это также в каждой версии Windows 10 SDK.Он совместим с .c, а также .cpp файлами.

0 голосов
/ 26 сентября 2018

VersionHelpers.h взят из Windows 8.1 SDK (2014).Он не поставляется с VS2012.Вы должны установить его вручную или обновить до текущей версии Visual Studio.

...