2013-03-10 147 views
1

我在python 3.3中使用此代碼與pywin32庫共享一個文件夾。 我該如何將權限添加到文件夾?以下代碼不會設置共享文件夾的權限。我想一個特定的用戶添加爲讀/寫使用python創建共享窗口文件夾的權限

import win32net 
import win32netcon 

shinfo={} 

shinfo['netname']='python test' 
shinfo['type']=win32netcon.STYPE_DISKTREE 
shinfo['remark']='data files' 
shinfo['permissions']=0 
shinfo['max_uses']=-1 
shinfo['current_uses']=0 
shinfo['path']='C:\\sharedfolder' 
shinfo['passwd']='' 
server='192.168.1.100' 

win32net.NetShareAdd(server,2,shinfo) 

回答

3

win32security模塊的替代方法是窩囊廢出並使用cacls程序,這是相當容易使用,參見在http://support.microsoft.com/kb/162786/en-us例如:

from subprocess import * 

proc = Popen("echo y|cacls filename /E /G BUILTIN\\Users:R", shell=True) 

proc.wait() 

print "Child exited with",proc.returncode 

echo y是因爲這個愚蠢的程序問「你確定嗎?」題。在Windows 7上,cacls已被棄用(但仍然有效),請使用icacls(或從資源工具包中的xcalcs)。

當然,創建子進程來做到這一點並不像調用Win32 API那麼高效。

3

你應該嘗試使用win32security模塊。 This站點示出了使用它來設置用戶權限

的一例
+0

使用與icacls相反的win32security模塊有什麼好處? – TechDude 2014-09-07 22:58:20

+1

@TechDude:效率:調用一個子進程,shell和cacls,總是比使用API​​直接效率低。如果您經常更改大量的文件權限,那麼您會注意到其中的差異。 – cdarke 2014-09-08 12:50:35

相關問題