在.NET中,是否有一种简单的方法来检查当前用户是否有权在目录中创建文件?与 C++ _access 函数等效的东西将是理想的。
我不想使用反复试验(创建一个虚拟文件,然后将其删除):除了看起来很黑客之外,其他软件正在监视相关目录中是否有已删除的文件。
我不想使用 System.DirectoryServices:查看 ACL、解析组成员身份以及不同组成员身份的权限如何交互似乎容易出错且太难。某处一定有一个是或否函数,不是吗?
提前致谢!
[编辑]作为奖励,如果它也适用于网络共享,那就太酷了。
提前检查许可是一个冒险的项目。更不用说复杂了,遍历整个ACL列表并计算有效权限集。
此外……没有任何保证。仅仅因为您提前主动检查了权限并不意味着在您尝试创建文件时权限不会更改。
“正确”的方法是制作一个安全需求 http://msdn.microsoft.com/en-us/library/aa720254%28v=vs.71%29.aspx,或者声明性地使用FileIOPermissionAttribute http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermissionattribute%28v=VS.100%29.aspx或者强制地,通过创建一个适当的实例FileIOPermission http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx并调用它的Demand() http://msdn.microsoft.com/en-us/library/system.security.codeaccesspermission.demand.aspx方法。如果您拥有所需的权限,请致电Demand()
成功;否则它会抛出SecurityException
,您需要抓住它并采取行动。
根据我的经验,命令式检查更容易。
还应该注意的是,在 Windows 7 中,虽然您在概念上可能具有对该目录的写访问权限,但除非您以提升的权限运行,否则它仍然可能无法工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)