首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为所有用户设置我的程序文件夹的写入权限

为所有用户设置我的程序文件夹的写入权限
EN

Stack Overflow用户
提问于 2010-10-13 16:53:26
回答 3查看 13.8K关注 0票数 6

我已经在Visual Studio中构建了一个程序。该程序创建一个日志文件,并在程序运行时写入该文件。因此,我构造了一个安装程序(setup-project),它应该为我的程序文件夹设置写权限,而不管哪个用户使用该程序。目前它看起来是这样的:

代码语言:javascript
复制
// ...
}
  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”。

翻译:“无法建立主域和受信任域之间的信任关系。”

堆栈跟踪如下所示:

代码语言:javascript
复制
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)

你知道我能做什么吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-13 18:25:13

也许最好的答案并不是你所要求的。有一个很好的理由不写到程序文件目录。特别是日志数据是暂时的,不应该写在这里。

更好的做法是将日志数据写入TEMP环境变量指定的目录。如果你这样做,你将为你的用户省去一些麻烦,并防止他们在未来咒骂你的软件。请查看此答案,它涵盖了相同的主题:

Allow access permission to write in Program Files of Windows 7

票数 3
EN

Stack Overflow用户

发布于 2011-07-12 07:01:56

您不是错过了将访问控制设置回目录的语句吗?

代码语言:javascript
复制
Directory.SetAccessControl(Directory.GetCurrentDirectory(), ds);
票数 3
EN

Stack Overflow用户

发布于 2010-10-14 12:10:22

这个previously asked question应该会给你指明正确的方向。基本上,您不需要而不是希望任何用户写入Program Files文件夹。UAC、安全和其他措施都是为了尽可能地防止这种情况。

本质上,如果您想要一个可由所有用户写入的单个文件,您将希望它位于可通过%ALLUSERSPROFILE%访问的ProgramData文件夹中,而不是单个用户的临时文件夹中,这肯定是您希望对日志文件执行的操作。请记住,临时文件夹的内容应被视为易失性内容,并且可以随时删除,例如通过磁盘清理向导删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3922064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档