Любая программа, которая определяет самую низкую ОС, необходимую для запуска вашего приложения?
Хорошо, если мой заголовок был недостаточно ясен, я нацеливаюсь на ОС Windows и просто хотел узнать, существует ли какая-либо программа, которая позволила бы мне узнать, какая "ОС" или выше кому-то нужна для запуска моего приложения, например:
Example functions used in application:
OpenFile - Minimum Supported Client: Windows XP
BCryptEncrypt - Minimum supported client: Windows Vista
...
Scan completed! Result: Minimum supported client: Windows Vista.
Я знаю, что есть приложение под названием DependencyWalker, но, насколько я могу судить, показывает только зависимые.dll. Существуют ли передовые практики или методы определения минимальных требований к операционной системе?
1 ответ
Такая проверка API может существовать. Я не знаю ни о чем существующем, и я подозреваю, что знаю почему.
Это почти наверняка, потому что это будет неправильно слишком часто.
Например, если ваша программа использует CreateProcess()
запустить PowerShell не получится в Windows 98, но как инструмент обнаружит, что вы вызываете несуществующую программу? Или, если ваша программа вызывает COM-интерфейс, который не существует: он не будет виден в таблицах экспорта или импорта. То же самое с функциями, которые загружаются динамически во время выполнения, используя GetProcAddress()
,
Обратите внимание, что это не означает, что проблему невозможно решить в практических случаях. Тем не менее, программа не может быть решена для всех случаев, и для большинства практических случаев требуется статичный анализ, требующий больших нагрузок. Только нереальные случаи, подобные тем, которые вы упомянули, будут тривиальными.