【问题标题】:Getting a System.UnauthorizedAccess exception when trying to access a file from a standard user account in vista尝试从 vista 中的标准用户帐户访问文件时出现 System.UnauthorizedAccess 异常
【发布时间】:2011-04-15 18:18:45
【问题描述】:

我正在尝试在 Windows 的公共应用程序数据位置生成许可证密钥文件,因此当标准用户帐户尝试访问我的应用程序时,应用程序可以检查许可证密钥是否有效。安装期间使用管理员帐户创建许可证文件,但当标准用户帐户尝试访问该文件时,会引发 System.UnauthroizedAccess 异常。

这是我用来创建存储许可证密钥文件的目录的代码。

FileSystemAccessRule fsAccessRules = new FileSystemAccessRule("USERS", FileSystemRights.FullControl, AccessControlType.Allow);
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\COMPANYNAME\\");
Directory.GetAccessControl(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\COMPANYNAME\\").AddAccessRule(fsAccessRules);

谢谢。

【问题讨论】:

    标签: c# .net windows security


    【解决方案1】:

    我认为问题在于您只是在修改内存中的 FileSystemSecurity 对象,这意味着您没有保存更改。在AddAccessRule 的文档中,您似乎需要在调用AddAccessRule 后调用SetAccessControl 将更改保存回磁盘。这将使用您添加的访问规则更新文件上的安全描述符。

    这篇 CodeProject 文章有一些很好的示例代码:Allow write/modify access to CommonApplicationData

    要考虑的另一件事:如果您只需要用户能够读取此文件,则可以考虑授予他们一组更有限的权限,例如FileSystemRights.Read。这将阻止用户实际修改许可证文件,假设他们不需要该功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 2014-09-08
      相关资源
      最近更新 更多