3

我目前正在使用 C++ 和 Qt 开发应用程序,我需要知道输入文件是否可执行。

我正在使用QFileInfo::isExecutable()which 对于大多数文件来说都是正确的,除了那些带有.msi扩展名的文件,它返回 false。

如何确定文件是否可执行?出于交叉兼容性的原因,我需要在 Qt 中执行此操作。

4

2 回答 2

5

嗯,MSI 文件实际上是不可执行的。它是 Windows Installer 可执行文件使用的一种文档格式。所以QFileInfo是正确的。

您需要解决的具体问题是什么?为什么您认为知道文件是否可执行会对您有所帮助?你心中的目标是什么?如果您向我们提供更多信息,我们或许可以提出更好的方法。

于 2013-02-26T07:49:31.630 回答
3

您应该知道如何QFileInfo::isExecutable()将文件确定为可执行文件:

  • 在 Windows Qt 中,仅检查文件的扩展名是否为.exe.com而不.bat检查其内容。

  • 在类 Unix 系统中,它检查文件的属性并为具有执行权限的文件返回 true。

因此.msi,在 Windows 下,从 Qt 的角度来看,文件不是可执行文件。

于 2013-02-26T07:49:24.860 回答