gpt4 book ai didi

c++ - 检查文件是否具有可执行权限windows c++

转载 作者:可可西里 更新时间:2023-11-01 11:46:32 26 4
gpt4 key购买 nike

我有一个文件名,我想通过c++检查它是否可以在windows上执行。我找到了 _access 和 _access_s,但它们只检查读/写。

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

最佳答案

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

您在这里看到的是 shell 对添加到文件中的额外流作出 react 。流是 NTFS 的一项功能。

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

对于从 Internet 下载的文件,Microsoft 的浏览器(IE 和 Edge)会添加一个名为“Zone.Identifier”的流,ShellExecute 和相关 API 在被要求执行文件时会检查该流向用户显示安全提示。

要清理文件以便不出现安全提示,必须删除流。

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

关于c++ - 检查文件是否具有可执行权限windows c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com