0
I have used the following to grant access to a file. Courtesy of kindall
https://stackoverflow.com/a/12168268/740899在Windows上使用Python
> import win32security
> import ntsecuritycon as con
>
> FILENAME = "whatever"
>
> userx, domain, type = win32security.LookupAccountName ("", "User X")
>
> sd = win32security.GetFileSecurity(FILENAME, win32security.DACL_SECURITY_INFORMATION)
> dacl = sd.GetSecurityDescriptorDacl() # instead of dacl = win32security.ACL()
>
> dacl.AddAccessAllowedAce(win32security.ACL_REVISION, con.FILE_GENERIC_READ | con.FILE_GENERIC_WRITE, userx)
>
> sd.SetSecurityDescriptorDacl(1, dacl, 0) # may not be necessary
> win32security.SetFileSecurity(FILENAME, win32security.DACL_SECURITY_INFORMATION, sd)
然而,訪問必須臨時刪除文件的權限。所以我用dacl.AddAccessDeniedAce
代替上面顯示的dacl.AddAccessAllowedAce
。但是,這會產生不良行爲,因爲我的用戶將來需要再次進行臨時訪問。在運行AddAccessDeniedAce
,然後重新運行AddAccessAllowedAce
後,被拒絕的控制仍然存在,並且我的用戶仍然無法訪問該文件。當用戶不再需要訪問時,我想完全刪除它們。這可以通過屬性菜單在Windows資源管理器來完成:
我一直沒能找到文件,以支持這樣的任務。有沒有人知道如何通過操縱DACL來做到這一點?或者我將不得不通過Windows界面手動執行此操作?
我目前正在看[這篇文章](http://stackoverflow.com/a/18742636/740899),看看我能否這樣做。 – ionalchemist
所以我已經確定每個這些方法都將單獨的ACE添加到文件中。我相信我可能需要刪除ACE。正在努力。 – ionalchemist