繁体   English   中英

尝试从Vista中的标准用户帐户访问文件时获取System.UnauthorizedAccess异常

[英]Getting a System.UnauthorizedAccess exception when trying to access a file from a standard user account in vista

我试图在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);

谢谢。

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

这篇CodeProject文章提供了一些很好的示例代码: 允许对CommonApplicationData的写入/修改访问

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM