【问题标题】:Any program that determines lowest OS required for your application to run? [closed]是否有任何程序可以确定您的应用程序运行所需的最低操作系统? [关闭]
【发布时间】:2016-12-25 23:55:35
【问题描述】:

好吧,如果我的标题不够清楚,我的目标是 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。是否有任何最佳实践或方法来确定良好的最低操作系统要求?

【问题讨论】:

  • 如果生活就这么简单……
  • 来自help center要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们倾向于吸引固执己见的答案和垃圾邮件。
  • 我会说:除了知道您使用什么技术之外,没有这样的事情。例如,Edge 浏览器插件将仅限于可以运行 Edge 的操作系统。通常,您希望在将其称为支持之前实际测试您支持的操作系统。我什至不想担心在 XP 中测试和支持的任何新应用程序。
  • @Mehrdad:告诉他们执行此操作的应用程序的名称将是建议,并提供指向它的链接将是外部资源。根据我发布的链接,这个问题是题外话。 (而且你在这里有足够的经验知道辱骂和人身侮辱在这里也不合适。)
  • @Mehrdad:我完全理解你所说的。我只知道这是错误的。有一个专门针对Software Recommendations 的网站,因为这样的问题是题外话。 (我提供的报价是找到或推荐,顺便说一句。)

标签: c++ windows operating-system


【解决方案1】:

这样的 API 检查器可能存在。我不知道任何存在,但我怀疑我知道为什么。

几乎可以肯定,因为它经常出错。

例如,如果您的程序使用CreateProcess() 运行 PowerShell,它会在 Windows 98 上失败,但工具如何检测到您正在调用不存在的程序?或者,如果您的程序正在调用一个不存在的 COM 接口:在导出或导入表中也不可见。与在运行时使用 GetProcAddress() 动态加载的函数相同。

请注意,这并不意味着问题在实际情况下不可能解决。但是,该程序不可能解决所有情况,并且需要一些相当繁重的静态分析才能适用于大多数实际情况。只有像你提到的那些不切实际的情况才会是微不足道的。

【讨论】:

  • 或者那些多年来一直是标准的程序/功能突然变得可选......
  • 几乎不可能确定一个程序在特定版本上工作,但至少可能相当容易确定它有可能工作的最早版本(即,它可能会或可能不会在 X 上工作,但绝对不会在 X 之前的任何东西上工作)。
猜你喜欢
  • 2019-10-17
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多