我需要重置從我的ASP.Net Web窗體應用程序(這是一個傳統項目)創建的文件夾的權限。我可以創建文件夾,但是當我嘗試重置剛剛創建的文件夾的權限時,出現錯誤「嘗試執行未經授權的操作。」VB.Net SetAccessControl在重置權限時失敗
當我創建安全規則,我用這個代碼:
securityRules.AddAccessRule(New FileSystemAccessRule("DOMAIN\User Group", FileSystemRights.FullControl, InheritanceFlags.None, PropagationFlags.InheritOnly, AccessControlType.Allow))
它封裝了一個名爲GetSecurity(PROJ作爲項目)函數中返回一個DirectorySecurity對象。
我的失敗代碼如下。 I f的第一部分工作正常,但Else部分失敗。
Dim projectPath = fullPath + "\" + finalFolder
If Not My.Computer.FileSystem.DirectoryExists(projectPath) Then
Dim directoryProperties As System.IO.DirectoryInfo =
Directory.CreateDirectory(projectPath, GetSecurity(proj))
Else
Dim directoryProperties As System.IO.DirectoryInfo = New DirectoryInfo(projectPath)
directoryProperties.SetAccessControl(GetProposalSecurity(proj))
End If
我一定要將自己添加到函數中的文件夾中,因爲它在本地機器上以IIS身份運行。我也是遠程服務器上文件夾的所有者。
我想完全替換文件夾上的當前訪問規則。我發現,如果我手動設置適用於「此文件夾,子文件夾和文件」的權限,我可以使用上面的代碼重置權限。有沒有辦法在訪問規則上設置「適用於」? –
嘗試使用「inheritanceFlags」和「propagationFlags」。設置InheritanceFlags.ContainerInherit,PropagationFlags.InheritOnly。因此,「FileSystemAccessRule」構造函數看起來像...... FileSystemAccessRule(「DOMAIN \ User Group」,FileSystemRights.FullControl,InheritanceFlags.ContainerInherit,PropagationFlags.InheritOnly,AccessControlType.Allow) – Naidu
不幸的是,這不起作用。我確實注意到,當我把它看作服務器的域管理員時,目錄上沒有設置所有者。代碼:FileSystemAccessRule(「DOMAIN \ User Group」,FileSystemRights.FullControl,InheritanceFlags.ContainerInherit,PropagationFlags.InheritOnly,AccessControlType.Allow) –