想象一下,我们有一个程序试图写入一个特定的文件,但是失败了。
在 Windows 平台上,可能导致文件不可写的可能原因是什么,以及可以向最终用户/管理员建议哪些步骤来修复它。
请包括可能需要管理员权限的步骤(显然用户可能不是管理员,但对于这个问题,我们假设他们是(或可以成为)管理员。
另外,我不太熟悉 Windows 中的权限是如何计算的。- 用户是否需要对树上的每个目录的写访问权,或类似的东西?
想象一下,我们有一个程序试图写入一个特定的文件,但是失败了。
在 Windows 平台上,可能导致文件不可写的可能原因是什么,以及可以向最终用户/管理员建议哪些步骤来修复它。
请包括可能需要管理员权限的步骤(显然用户可能不是管理员,但对于这个问题,我们假设他们是(或可以成为)管理员。
另外,我不太熟悉 Windows 中的权限是如何计算的。- 用户是否需要对树上的每个目录的写访问权,或类似的东西?
一些建议:
attrib -r
; 您必须是文件所有者或管理员)编辑1:只有第二项(文件被锁定)有一个可能的解决方案,所有用户都可能在没有帮助的情况下完成。对于第一个和第三个,您可能需要提供指导(并希望该文件不是故意设为只读的!)。
编辑2:从技术上讲,用户确实需要对直到根目录的所有目录的写入和执行(chdir)权限。Windows 可能会跳过树上的一些递归检查作为性能优化,但您不应依赖此,因为管理员可以对某些用户强制执行这些所谓的“遍历检查”。
编辑 3:@RobM:是的,您应该检查没有明显的理由表明用户不应该拥有她需要但没有的权限。在我的第一次编辑中,我以一种不太直接的方式提到了这一点。但是,在某些情况下,用户应该对文件具有写权限,但由于文件系统损坏、程序行为不端或他们自己的错误而没有。
如果您在确定文件是否被锁定时遇到问题,请尝试使用Unlocker - 它是一个非常有用的免费实用程序,可向您显示锁定文件的进程,并让您在需要时强制解锁。
在 Vista 上,它是否也被“标记”为不安全,因为它是从 Internet 下载的,您必须单击它的资源管理器属性对话框上的取消阻止按钮?
让我们稍微改变一下。如果您的程序尝试写入文件但失败,您需要将文件的位置更改为用户可以写入的位置,或者在程序启动时检查正确的权限,如果用户不这样做则拒绝运行拥有他们。践踏系统权限不是解决办法。