检查文件是否具有可执行权限Windows C ++

我有一个文件名,我想检查是否可以执行或不通过c + +窗口。 我发现_access和_access_s,但他们只检查读/写。

我的问题是,例如,当我下载一个bat文件时,窗口将其作为安全措施进行阻止。 当我运行我的程序并尝试执行它时,Windows会阻止我的程序,并询问用户是否要继续,因为该文件是有风险的。 我想在执行之前通过检查文件权限来避免这种情况。

如果您使用的是基于Unix的操作系统,Windows文件系统NTFS不支持可执行属性。

你在这里看到的是外壳响应一个额外的流被添加到文件。 而流是NTFS的一个特性。

Microsoft有一些示例代码显示如何访问文件中的流:

  • 如何使用NTFS备用数据流

在从互联网上下载文件的情况下,微软浏览器(IE和Edge)添加一个名为“Zone.Identifier”的流, ShellExecute和相关的API在被要求执行文件时向用户提供安全提示。

要清理该文件,以便不出现安全提示,则需要清除该流。

 BOOL didDeleteZoneIdentifier = DeleteFile(TEXT("Path To Batch File.bat:Zone.Idenfier")); if(!didDeleteZoneIdentifier){ int errorCode = GetLastError(); ....