在.NET中,检查当前用户是否可以写入目录

2023-12-21

在.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(使用前将#替换为@)

在.NET中,检查当前用户是否可以写入目录 的相关文章

  • 在没有实现 IEnumerable 的情况下,我们的自定义类数组如何与 foreach 一起使用?

    这个长标题已经包含了我所有的问题 所以我只想举个例子 MyClass array 在不实现 IEnumerable 接口方法的情况下 该数组如何与 Foreach 一起使用 Array http msdn microsoft com en
  • 查询限制与返回类不同的类

    对于我当前的项目 我正在学习 NHibernate 但在翻译以下查询时遇到问题 select person Firstname person Lastname from Person inner join Contract on contr
  • protobuf-net 代码生成器

    我正在将 Google Proto Buffers 合并到我的项目中 Windows 的 protoc exe 生成用于序列化 反序列化的头文件和源文件的方式非常好 我需要 protobuf net 代码生成器 因此 例如 如果我有一个 P
  • 如何对与 VS DOM 交互的 Visual Studio AddIn 进行单元测试

    我开发了一个 Visual Studio 插件 它与 Visual Studio DOM 交互并修改加载的解决方案 虽然我努力分离与 DOM 交互的代码 并可以通过单元测试对其他业务逻辑进行单元测试 但有没有一种方法可以对 VS DOM 交
  • 您如何使用 ReSharper 5 中的模式匹配功能?

    Resharper 5 的新模式匹配看起来非常强大 尽管需要一些修改才能弄清楚如何使用它 对于那些不熟悉此功能的人 它允许您在代码中搜索特定模式 此类模式的实例可以选择性地替换为替代方案 在 IntelliJ 中 这称为结构搜索和替换 它比
  • Flash - 提示用户记住相机和麦克风设置

    我使用 Flash 向我的网站上的麦克风和摄像头设置请求用户 但记住复选框未显示 因此每次我的用户登录时 都会再次请求权限 如何使该复选框显示以避免这种情况 Call Security showSettings SecurityPanel
  • 更新到 ASP.NET Core 2.0 - 软件包与 netcoreapp2.0 不兼容

    我正在尝试更新到 NET Core 2 0 但在使用参考安装的所有软件包上都遇到这些错误 问题可能是 我正在参考netcoreapp1 0在输出中 Microsoft EntityFrameworkCore Tools DotNet 2 0
  • Web API 请求上的滑动会话

    UPDATE 看起来它正在尝试写入新的 cookie 标头ApplyResponseGrantAsync但不能因为它是抛出标头已发送的异常 UPDATE 更清楚 我如何获得Set Cookie在 Web API 请求期间添加到 XHR 响应
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 测试从 ComboBox 派生的自定义控件

    我创建了一个从 ComboBox 派生的控件 并希望对其行为进行单元测试 但是 它在我的单元测试中的行为似乎与实际应用程序中的行为不同 在实际应用程序中 Combobox DataSource 属性和 Items 同步 换句话说 当我更改
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 依赖性问题在大型应用程序中实现用于语义日志记录的 EventSource

    我正在开发一个由三个 Windows 服务和几个普通 Windows 应用程序 exe 组成的大型产品 现在我们要转向 ETW 和语义日志记录 并使用 Microsoft Diagnostics Tracing EventSource 我在
  • C#:在这种情况下我将如何过滤掉不需要的命名空间?

    这更像是一个与语言无关的问题 而不是特定于 C 的问题 但由于它涉及命名空间 我认为我应该将其标记为与 NET 相关 假设您有一堆代表名称空间的字符串 System System Windows System Windows Input S
  • 从内存加载程序集

    我正在移植一个 Java 应用程序 其中类在运行时从内存 字节数组 加载并 执行 我试图在 C 中实现同样的目标 但遇到问题 System IO FileNotFoundException异常 当尝试从字节数组加载程序集时 使用AppDom
  • 如何为 F# 应用程序编写退出处理程序?

    主题说明了一切 如果我的应用程序被 C 终止 我希望运行一些代码 Use AppDomain ProcessExit http msdn microsoft com en us library system appdomain proces
  • 在 UserControl C# .NET 中添加/停靠控件

    我正在编写一个 UserControl 它以编程方式添加子控件 目前我正在添加新的控件 如下所示 this Controls Add new Control Height 16 Dock DockStyle Top 我遇到的问题是新控件添加
  • 查询 XmlDocument 而不会出现“命名空间前缀未定义”问题

    我有一个 Xml 文档 它定义并引用了一些命名空间 我将其加载到 XmlDocument 对象中 据我所知 我创建了一个 XmlNamespaceManager 对象 用于查询 Xpath 问题是我收到命名空间 my 未定义的 XPath
  • 如何在控制台应用程序中创建事件循环/消息管道?

    我想创建一个注册了一些事件的控制台应用程序 问题是这些事件永远不会被触发 在这种特殊情况下Windows 窗体 http en wikipedia org wiki Windows Forms我应该调用的应用程序Application Ru

随机推荐