一般的bs程式都會涉及到上傳檔案,這就要求network service使用者有對檔案夾的寫入權限,通常情況下我們都是用打包時調用打包程式的指令碼去設定許可權,在不打包的時候更多的就是手工去設定了,如果僅對一兩個檔案夾設定部署工作還不是很繁瑣,但在當系統可以安插模組的情況下,模組數就可能比較多,而又不好把所有的檔案都放到一個目錄下,這時動態讓程式自己去設定特定的許可權就會比較有優越性。
查閱資料的過程用了半天時間,首先想到的是看看系統有沒有這樣的命令,馬上cmd鍵入help斷行符號,看到一個cacls似乎看到了希望,簡單看了一下協助資訊,然後搜尋一下看看別人的經驗,最後發現這個只是對檔案的操作許可權的修改,不能實現對檔案夾設定許可權。最後在http://www.codeproject.com/dotnet/NTSecurityNET.asp 發現了有一個用vc++寫的類庫,很方便使用,也比較簡單,經測試有效。特寫出來與大家分享。以下是我寫的一個例子:string accountName = System.Environment.UserName;
string system = System.Environment.MachineName;
accountName = "NETWORK SERVICE";
Microsoft.Win32.Security.WindowsUser wu = new Microsoft.Win32.Security.WindowsUser(accountName, system);
SecuredObject so = new SecuredObject();
so.ObjectName = @"d:\test";
so.ObjectType = SecuredObjectType.FileObject;
so.Permissions.SetAccess(wu, AccessRights.FileWriteUnsync, AceInheritanceFlags.ContainerInherit| AceInheritanceFlags.ObjectInherit);