作为问题标题可能表明,我会非常想知道的检查方法的统相关参数。给出的文件或文件夹(暗示:这些是你看看在"安全"tab)。基本上,我需要的是采取文件的路径或目录(在一个地方机,或者,最好,在一个分享关于远程计算机),并获得该名单的用户/用户组和相应权限,对于这个文件夹。最终,应用将历一个目录树,阅读的权限,对每个对象及处理它们。

现在,我能想到的一定数量的方式做到这一点:

  • 分析cacls.exe 输出--很容易做到的,但是,除非im失去了一些东西,cacls.exe 只有赋予的权限形式的R|W|C|F(阅读写/修改/完整的),这是不够(我需要得到的权限,如"列表的文件夹中的内容",扩大权限的过)
  • xcacls.exe 或xcacls.js输出-是的,他们给我所有我需要权限,但他们的工作非常缓慢,这需要xcacls.js约一秒得到的权限,当地的系统的文件。这样的速度是不可接受的
  • win32security(它环绕winapi,对吗?) -我相信它可以处理像这样的,但是我宁愿不要重新发明轮子

还有什么我丢在这里?

有帮助吗?

解决方案

除非你喜欢自己,win32security是的路要走。有的开端的一个例子来说明:

http://timgolden.me.uk/python/win32_how_do_i/get-the-owner-of-a-file.html

如果你想要的生活稍有危险(!) 我在进行的winsys包是设计来做什么你之后。你可以得到电脑开发的版本:

http://timgolden.me.uk/python/downloads/WinSys-0.4.win32-py2.6.msi

或者你可以结帐svn干:

svn有 http://winsys.googlecode.com/svn/trunk winsys

做什么你描述(猜略在确切的要求)你可以这样做:

import codecs
from winsys import fs

base = "c:/temp"
with codecs.open ("permissions.log", "wb", encoding="utf8") as log:
  for f in fs.flat (base):
  log.write ("\n" + f.filepath.relative_to (base) + "\n")
  for ace in f.security ().dacl:
    access_flags = fs.FILE_ACCESS.names_from_value (ace.access)
    log.write (u"  %s => %s\n" % (ace.trustee, ", ".join (access_flags)))

TJG

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top