You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下用vcpkg构建CMake项目遇权限错误及运行失败问题

解决vcpkg Manifest模式CMake配置阶段applocal.ps1权限拒绝(MSB3075)及运行弹窗问题

问题重现

按照vcpkg Manifest模式官方CMake示例构建项目时,CMake配置阶段编译测试程序触发PostBuildEvent执行applocal.ps1脚本,出现Access is denied错误,导致MSB3075编译失败,同时弹出两次"This app can't run on your PC"提示框。

环境信息

  • Visual Studio 2022 Community
  • Windows 10 x64(版本19045.3448)
  • MSVC v143
  • Windows 10 SDK 10.0.20348.0

已尝试无效方案

  • 删除CMake缓存并重新配置
  • 更换CMake生成器(如Ninja、Visual Studio Generator)
  • 命令行直接运行CMake命令
  • 管理员身份启动Visual Studio
  • 设置程序兼容性模式
  • 取消项目目录只读属性
  • 重装Visual Studio

可行解决方案

1. 调整PowerShell执行策略

applocal.ps1是PowerShell脚本,Windows默认执行策略可能阻止其运行:

  • 以管理员身份打开PowerShell,执行:
    Get-ExecutionPolicy
    
  • 如果返回Restricted,执行以下命令放宽策略(推荐RemoteSigned,避免过度开放):
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  • 修改完成后重启VS,重新执行CMake配置。

2. 排查杀毒软件拦截

Windows Defender或第三方杀毒软件可能误将applocal.ps1标记为恶意脚本:

  • 临时关闭实时保护功能,重新执行CMake配置验证问题是否解决。
  • 确认是拦截后,将vcpkg安装目录(默认C:\vcpkg)添加到杀毒软件信任列表。

3. 临时禁用vcpkg自动复制依赖(Workaround)

如果上述方法无效,可手动跳过applocal脚本执行:

  • 在项目CMakeLists.txt中添加配置:
    set(VCPKG_APPLOCAL_DEPS OFF)
    
  • 配置完成后,手动将依赖DLL复制到程序输出目录,保证程序正常运行。

4. 修复vcpkg脚本

可能是vcpkg脚本文件损坏或权限异常:

  • 打开vcpkg安装目录,执行:
    .\bootstrap-vcpkg.bat -clean
    
  • 重新初始化vcpkg后,删除项目的vcpkg缓存目录(默认在build/vcpkg_installed),再重新配置CMake。

5. 修复目录权限

确保当前用户对vcpkg安装目录、项目构建目录有完全控制权限:

  • 右键目标目录 → 属性 → 安全 → 编辑 → 添加当前用户,授予完全控制权限。
  • 应用设置后重启VS。

内容的提问来源于stack exchange,提问作者David Harabagiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:35:09