我有一个代码在用户指定的目录中创建文件。用户可以指向他无法创建文件的目录,但他可以重命名它。如何检查是否可以在MS XP/Vista上的给定目录内创建文件?
我为测试目的创建了目录,我们称之为C:\foo
。
我有以下权限C:\foo
:
- 遍历目录/执行文件
- 删除子文件夹和文件
- 删除
- 读取权限
- 更改权限
- 取得所有权
我没有任何下列权限到C:\foo
:
- 完全控制
- 文件创建
- 文件夹创建
我曾尝试以下方法,到目前为止:
os.access('C:\foo', os.W_OK) == True
st = os.stat('C:\foo')
mode = st[stat.ST_MODE]
mode & stat.S_IWRITE == True
我相信这是由于我可以重命名文件夹,所以它对我而言是可以改变的。但它的内容 - 不是。
有谁知道我该如何编写代码来检查给定的目录,如果当前用户有权限在该目录中创建文件?
简单 - 我要检查,如果当前用户具有文件创建和文件夹创建权限指定文件夹名称。
编辑:需要从“Windows Vista认证”计划,从测试情况下,没有3出现这样的代码的规定:
- 应用程序一定不能让最低权限的用户保存任何文件到Windows系统目录以便通过这个测试用例。
这应该被理解为“应用程序可以尝试保存文件在Windows系统目录中,但不应该在失败时崩溃?或者说'应用程序在尝试保存文件之前必须执行安全检查?'
我是否应该停止打扰,因为Windows Vista本身不会允许最低特权用户保存%WINDIR%中的任何文件?
谢谢。我会遵循你和Ishmaeels的建议。 – Abgan 2009-01-16 12:41:10