我目前正在使用 C++ 和 Qt 开发应用程序,我需要知道输入文件是否可执行。
我正在使用QFileInfo::isExecutable()
which 对于大多数文件来说都是正确的,除了那些带有.msi
扩展名的文件,它返回 false。
如何确定文件是否可执行?出于交叉兼容性的原因,我需要在 Qt 中执行此操作。
嗯,MSI 文件实际上是不可执行的。它是 Windows Installer 可执行文件使用的一种文档格式。所以QFileInfo
是正确的。
您需要解决的具体问题是什么?为什么您认为知道文件是否可执行会对您有所帮助?你心中的目标是什么?如果您向我们提供更多信息,我们或许可以提出更好的方法。
您应该知道如何QFileInfo::isExecutable()
将文件确定为可执行文件:
在 Windows Qt 中,仅检查文件的扩展名是否为.exe
,.com
而不.bat
检查其内容。
在类 Unix 系统中,它检查文件的属性并为具有执行权限的文件返回 true。
因此.msi
,在 Windows 下,从 Qt 的角度来看,文件不是可执行文件。