![在 Windows 7 上构建](https://linux22.com/image/1278132/%E5%9C%A8%20Windows%207%20%E4%B8%8A%E6%9E%84%E5%BB%BA.png)
我最近在工作中从 XP 迁移到了 Windows 7,作为一名开发人员,这简直是一场噩梦。我为嵌入式系统开发,所以我们的构建过程可能有点不同。我们的构建过程极其复杂,会生成大量文件副本,需要移动和复制。问题是构建通常会失败,因为它没有复制文件的权限。
在我的整个构建目录中我将运行
takeown /F * /R /D Y
icacls . /T /Grant <userid>:F
从根目录构建,但我仍然无法复制文件(无法创建常规文件“bla.bla”:权限被拒绝)。因此,我不得不手动触摸文件,将模式设置为 +www,然后再次构建。
我的问题是是否有一种简单的方法来获取目录树,以便任何用户/应用程序都可以创建/修改其中的所有文件。icacls 似乎不能解决这个问题。
编辑:额外信息:Windows x64,GNU make,在调用 make 之前使用 bat 文件设置环境变量
答案1
在图形 Windows 资源管理器中找到构建目录,右键单击它,然后选择特性。前往安全选项卡,然后单击先进的按钮,然后在出现的窗口中单击先进的按钮。如果包括可从该对象的父级继承的权限已选中,请取消选中。选择消除在出现的警告对话框中。如果任何 ACL 仍保留在权限条目框,将其删除。
现在,选择添加,输入您的用户名,点击好的。然后,将出现一个对话框,让您为该用户选择权限。选中完全控制框下授予并点击好的。对需要访问目录的其他用户帐户或组重复此操作(如果有)。此外,为管理员组和内置SYSTEM
用户以防万一。如果目录位于您的本地计算机上,并且只有您可以登录,您可能希望只提供每个人而是进行全面控制,以绝对确保事情能够顺利进行。
接下来,选择用可从该对象继承的权限替换所有子对象权限。对话框现在应如下所示:
最后,点击好的,并选择是的验证您是否要覆盖该目录中所有文件和子目录的权限。这将用与您刚刚应用于构建目录本身的权限完全匹配的权限替换您正在执行的任何权限字母组合。此外,对构建目录权限的更改现在将自动传播到其下的所有文件,因此您将来只需更改构建目录的权限,而不是在整个目录中递归执行此操作。
答案2
首先,我会以管理员身份运行您用来构建/移动的工具,这应该可以解决许多问题。此外,当您说 ICacls 似乎不起作用时,它是否无法授予您权限,或者它授予了您权限,但您仍然遇到问题?