【问题标题】:how to check if a directory is writeable in win32 C/winapi?如何检查一个目录在win32 C/winapi中是否可写?
【发布时间】:2009-05-28 16:27:55
【问题描述】:

我知道两种不可靠的方法:

  • _access() - 不适用于目录(仅检查存在)
  • CreateFile() - 在存在虚拟存储 (AFAIK) 时给出误报

最有用的是代码示例,因为 win32 ACL 访问函数非常复杂。请不要发布指向 msdn 的链接,我一直在那里,但我一生都无法弄清楚我应该如何处理所有这些 DACL、SACL 和安全描述符——我在一个跨平台应用程序上工作它需要这个特定的功能,否则与平台无关。比访问 Windows ACL 更简单的解决方案非常受欢迎。

编辑:您可以放心地假设应用程序运行时目录权限不会改变。

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    您可以在清单文件 (http://www.codeguru.com/csharp/csharp/cs_misc/designtechniques/article.php/c15455/) 中为您的应用程序禁用 位置虚拟化 - 这应该使 CreateFile 对于您的目的足够可靠。

    【讨论】:

      【解决方案2】:

      在任何操作系统上都没有可靠的方法,因为在测试它们和实际写入文件之间可以更改权限。

      【讨论】:

      • 是的,没关系,我可以为应用假设一个正常的工作环境。
      • 这很重要 - 检查文件是否可以成功写入的唯一方法是写入文件。
      • 它最终会出现在虚拟商店中,因为 MS 的某个人有一些愚蠢的想法,我已经在帖子中写过......
      • “愚蠢的想法”并不愚蠢。这是为了防止最终用户拥有大量无法运行的软件,因为愚蠢的开发人员不会费心遵循关于他们的应用程序可以在哪里读写的指南。因为你不明白而毫无意义地抨击MS不是很聪明;对试图回答你问题的人也不无礼。这让他们不太愿意在未来尝试帮助您。
      猜你喜欢
      • 2012-01-04
      • 2010-09-11
      • 2011-04-18
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多