如何阻止Visual Studio 2017创建管理员所有且只读的项目文件?
解决Visual Studio 2017非管理员运行时文件权限问题
我之前帮团队里的小伙伴解决过完全一样的问题,这明显是UAC权限继承或者VS运行上下文导致的,给你几个实操性强的解决方案:
方案1:修改Visual Studio的运行权限配置
首先确认VS没有以管理员权限的上下文运行(哪怕你没手动勾选,可能系统默认继承了权限):
- 找到VS2017的主程序
devenv.exe,默认路径是C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe(根据你的VS版本调整路径,比如Community版把Professional换成Community) - 右键程序→属性→切换到兼容性选项卡
- 取消勾选「以管理员身份运行此程序」,然后点击「更改所有用户的设置」,确保全局设置里也没有勾选这个选项
- 点击确定后重启VS,再创建新项目测试
方案2:重置项目存放文件夹的权限
如果是文件夹本身的权限继承导致新生成的文件归Administrators组,直接调整文件夹权限:
- 找到你存放项目的根文件夹(比如
D:\VSProjects),右键→属性→安全选项卡 - 点击「编辑」→「添加」,输入你的非管理员用户名,点击「检查名称」确认后添加到权限列表
- 给这个用户分配完全控制权限(至少要包含「修改」「写入」「读取和执行」)
- 勾选窗口底部的「将所有子对象权限条目替换为可继承的权限条目」,然后点击应用→确定
- 这个操作会把文件夹下所有已有文件和子文件夹的权限批量更新,之后新生成的文件也会继承你的用户权限
方案3:禁用UAC虚拟化(谨慎操作)
如果是UAC虚拟化把VS的文件写入重定向到了管理员上下文,可以尝试关闭虚拟化:
- 按下
Win+R输入regedit打开注册表编辑器 - 导航到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System - 找到
EnableVirtualization(如果没有就右键新建DWORD(32位)值,命名为这个),将其值改为0 - 重启电脑后生效,注意:这个设置会影响整个系统的UAC虚拟化功能,如果公司有域策略限制,可能会被重置
方案4:调整VS项目模板的权限
如果新创建的项目从模板继承了管理员权限,修改模板目录的权限:
- 找到VS2017的项目模板目录,默认路径是
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ProjectTemplates - 右键该目录→属性→安全选项卡,给你的非管理员用户添加「写入」权限
- 这样新创建的项目会基于权限正确的模板生成,文件归属就会是你的用户而不是Administrators组
额外提示
- 如果你在公司域环境下,以上操作可能被组策略限制,建议先联系IT部门确认权限设置
- 不要随意修改系统盘根目录或系统文件夹的权限,只针对你自己的项目存放目录操作
内容的提问来源于stack exchange,提问作者Verxion




