2009-11-28 87 views
6

我的应用正在创建一个目录,以便我可以在其中存储日志文件。我将用户安全性添加到目录中,但我不知道如何使其传播。例如,我将用户everyone添加到目录中,并且访问了readwrite,但是当我的应用程序在此目录中创建日志文件时,该日志文件没有继承安全性(读取,写入)everyone目录安全

我错过了什么?

DirectorySecurity dirSec = Directory.GetAccessControl(_dbPath); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.Write, AccessControlType.Allow)); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.ReadAndExecute, AccessControlType.Allow)); 
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Allow)); 
Directory.SetAccessControl(_dbPath, dirSec); 
+1

如果系统没有以英文运行,因此该名称位于其他系统上(例如法语操作系统上的“Tout le monde”),请注意“Everyone”不会运行。请参阅http://stackoverflow.com/questions/5298905/add-everyone-privilege-to-folder-using-c-net以解决该问题。 – 2013-04-19 16:33:35

回答

4

你快到了。您缺少的是AuthorizationRule.InheritanceFlags标志 - 默认情况下,ACE不可继承,但如果添加InheritanceFlags属性,则ACE将变为可继承。