使用python向文件夹添加权限

使用python向文件夹添加权限,python,pywin32,Python,Pywin32,我想让任何人都可以完全访问特定文件夹(+子文件夹+其中的文件)。 我试过这个密码: f = "c:\test" #... which is the folder #vars sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None) worldRights = win32file.FILE_ALL_ACCESS #get DACL fileSecDesc = win32security.GetNam

我想让任何人都可以完全访问特定文件夹(+子文件夹+其中的文件)。 我试过这个密码:

f = "c:\test" #... which is the folder

#vars
sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None)
worldRights = win32file.FILE_ALL_ACCESS

#get DACL
fileSecDesc = win32security.GetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION)
fileDacl = fileSecDesc.GetSecurityDescriptorDacl()

#add rights
fileDacl.AddAccessAllowedAce( win32security.ACL_REVISION, worldRights, sidWorld )

win32security.SetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION, \
    None, None, fileDacl, None )
问题是,它并没有显示为完全访问,我认为是因为缺少继承(我也需要继承)。我想不出怎么解决这个问题

知道我错过了什么吗? 谢谢,致以最良好的祝愿,
Florian Lagg。

休息后拿到了:很容易:

#vars
sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None)
worldRights = win32file.FILE_ALL_ACCESS
flags = win32security.OBJECT_INHERIT_ACE| \
    win32security.CONTAINER_INHERIT_ACE

#get DACL
fileSecDesc = win32security.GetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION)
fileDacl = fileSecDesc.GetSecurityDescriptorDacl()

#add rights
fileDacl.AddAccessAllowedAceEx( \
    win32security.ACL_REVISION_DS, \
    flags, \
    worldRights, \
    sidWorld)

win32security.SetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION, \
    None, None, fileDacl, None )
因此:解决了!
无论如何谢谢你

休息后拿到了:很容易:

#vars
sidWorld = win32security.CreateWellKnownSid(win32security.WinWorldSid, None)
worldRights = win32file.FILE_ALL_ACCESS
flags = win32security.OBJECT_INHERIT_ACE| \
    win32security.CONTAINER_INHERIT_ACE

#get DACL
fileSecDesc = win32security.GetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION)
fileDacl = fileSecDesc.GetSecurityDescriptorDacl()

#add rights
fileDacl.AddAccessAllowedAceEx( \
    win32security.ACL_REVISION_DS, \
    flags, \
    worldRights, \
    sidWorld)

win32security.SetNamedSecurityInfo( \
    f, win32security.SE_FILE_OBJECT, win32security.DACL_SECURITY_INFORMATION, \
    None, None, fileDacl, None )
因此:解决了!
无论如何谢谢你

f=“c:\test”
,我不认为这和你所想的一样,除非你在
c:est
有一个目录,否则我不认为这和你所想的一样,除非你在
c:est
有一个目录,这真的很有帮助。谢谢这真的很有帮助。谢谢