我已经在Visual Studio中构建了一个程序。该程序创建一个日志文件,并在程序运行时写入该文件。因此,我构造了一个安装程序(setup-project),它应该为我的程序文件夹设置写权限,而不管哪个用户使用该程序。目前它看起来是这样的:
// ...
}
InitializeComponent();
string folder = Directory.GetCurrentDirectory();
DirectorySecurity ds = Directory.GetAccessControl(folder);
ds.AddAccessRule(new FileSystemAccessRule("Everyone", //Everyone is important
//because rights for all users!
FileSystemRights.Read | FileSystemRights.Write, AccessControlType.Allow));
}
// ...在最后两行中,我得到了一个System.SystemException:“Die Vertrauensstellung zwischen der primären Domäne und der vertrauenswürdigen Domäne konnte nicht nicht hergestellt werden”。
翻译:“无法建立主域和受信任域之间的信任关系。”
堆栈跟踪如下所示:
bei System.Security.Principal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed)
bei System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean& someFailed)
bei System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
bei System.Security.Principal.NTAccount.Translate(Type targetType)
bei System.Security.AccessControl.CommonObjectSecurity.ModifyAccess(AccessControlModification modification, AccessRule rule, Boolean& modified)
bei System.Security.AccessControl.CommonObjectSecurity.AddAccessRule(AccessRule rule)
bei System.Security.AccessControl.FileSystemSecurity.AddAccessRule(FileSystemAccessRule rule)你知道我能做什么吗?谢谢
发布于 2010-10-13 18:25:13
也许最好的答案并不是你所要求的。有一个很好的理由不写到程序文件目录。特别是日志数据是暂时的,不应该写在这里。
更好的做法是将日志数据写入TEMP环境变量指定的目录。如果你这样做,你将为你的用户省去一些麻烦,并防止他们在未来咒骂你的软件。请查看此答案,它涵盖了相同的主题:
Allow access permission to write in Program Files of Windows 7
发布于 2011-07-12 07:01:56
您不是错过了将访问控制设置回目录的语句吗?
Directory.SetAccessControl(Directory.GetCurrentDirectory(), ds);发布于 2010-10-14 12:10:22
这个previously asked question应该会给你指明正确的方向。基本上,您不需要而不是希望任何用户写入Program Files文件夹。UAC、安全和其他措施都是为了尽可能地防止这种情况。
本质上,如果您想要一个可由所有用户写入的单个文件,您将希望它位于可通过%ALLUSERSPROFILE%访问的ProgramData文件夹中,而不是单个用户的临时文件夹中,这肯定是您希望对日志文件执行的操作。请记住,临时文件夹的内容应被视为易失性内容,并且可以随时删除,例如通过磁盘清理向导删除。
https://stackoverflow.com/questions/3922064
复制相似问题