如何检查是否可以在MS XP/Vista上的给定目录中创建文件?

Abg*_*gan 6 python windows permissions winapi windows-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

C:\foo

C:\foo

我相信这是因为我可以重命名文件夹,所以它对我来说是多变的.但它的内容 - 不是.

有没有人知道如果当前用户有权在该目录中创建文件,我如何编写将检查给定目录的代码?

简而言之 - 我想检查当前用户是否具有给定文件夹名称的文件创建文件夹创建权限.

编辑:需要这些代码来自'Certified for Windows Vista'计划的第3号测试案例,其中指出:

  1. 应用程序不得允许Least-Privileged用户将任何文件保存到Windows系统目录以通过此测试用例.

这应该被理解为"应​​用程序可能会尝试在Windows系统目录中保存文件,但不应该在失败时崩溃吗?" 或者更确切地说"应用程序必须在尝试保存文件之前执行安全检查?"

我是否应该因为Windows Vista本身不允许Least-Privileged用户在%WINDIR%中保存任何文件而停止打扰?

Meg*_*can 4

我最近编写了一个应用程序来通过一组测试以获得 Microsoft 的 ISV 状态,并且我还添加了该条件。我的理解是,如果用户是最低权限,那么他将无权在系统文件夹中写入。所以我按照以实玛利描述的方式解决了这个问题。我尝试创建文件并捕获异常,然后通知用户他无权将文件写入该目录。

根据我的理解,最低权限用户将不具有写入这些文件夹的必要权限,如果他有,那么他就不是最低权限用户。

我是否应该仅仅因为 Windows Vista 本身不允许最低权限用户在 %WINDIR% 中保存任何文件而停止烦恼?

在我看来?是的。