为什么QFileInfo :: isExecutable()为“.msi”文件返回false?

时间:2013-02-26 07:43:20

标签: c++ qt

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

我正在使用QFileInfo::isExecutable(),它对大多数文件都有正确的行为,但扩展名为.msi的文件除外,它返回false。

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

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

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

因此,.msi文件不是Windows下Qt的可执行文件。

相关问题