C++ 如何在win32 C/winapi中检查目录是否可写?

C++ 如何在win32 C/winapi中检查目录是否可写?,c++,windows,winapi,C++,Windows,Winapi,我知道有两种方法不可靠: _access()-在目录上不起作用(仅检查是否存在) CreateFile()-在存在虚拟存储(AFAIK)时给出误报 最有用的是一个代码示例,因为win32 ACL访问函数极其复杂。请不要发布到msdn的链接,我一直在那里,我一辈子都不知道我应该如何处理所有这些DACL、SACL和安全描述符-我在一个跨平台的应用程序上工作,它需要这一特定的功能,但在其他方面是平台无关的。比访问Windows ACL更简单的解决方案更受欢迎 编辑:您可以安全地假设,在应用程序运行

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

  • _access()-在目录上不起作用(仅检查是否存在)
  • CreateFile()-在存在虚拟存储(AFAIK)时给出误报
最有用的是一个代码示例,因为win32 ACL访问函数极其复杂。请不要发布到msdn的链接,我一直在那里,我一辈子都不知道我应该如何处理所有这些DACL、SACL和安全描述符-我在一个跨平台的应用程序上工作,它需要这一特定的功能,但在其他方面是平台无关的。比访问Windows ACL更简单的解决方案更受欢迎


编辑:您可以安全地假设,在应用程序运行时,目录权限不会更改。

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

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

您可以在清单文件()中为您的应用程序禁用位置虚拟化-这将使CreateFile对您的目的足够可靠。

您可以在清单文件()中为您的应用程序禁用位置虚拟化-这将使CreateFile对您的目的足够可靠。

是,这没关系,我可以为应用程序假设一个正常的工作环境。这很重要-检查文件是否可以成功写入的唯一方法是写入文件。由于微软的一些愚蠢想法,它最终会进入虚拟商店,我已经在帖子中写过了……这个“愚蠢的想法”并不是愚蠢的。这是为了防止最终用户拥有大量无法工作的软件,因为愚蠢的开发者懒得遵循他们的应用程序可以读写的指导原则。毫无意义的女士抨击,因为你不明白是不是很聪明;对那些试图回答你问题的人也不粗鲁。这会让他们不太愿意在将来帮助你。是的,这也没关系,我可以假设应用程序有一个健全的工作环境。这很重要-检查文件是否可以成功写入的唯一方法就是写入文件。由于微软的某个愚蠢想法,它最终会进入虚拟商店,我已经在帖子里写过了…这个“愚蠢的想法”并不是愚蠢的。这是为了防止最终用户拥有大量无法工作的软件,因为愚蠢的开发者懒得遵循他们的应用程序可以读写的指导原则。毫无意义的女士抨击,因为你不明白是不是很聪明;对那些试图回答你问题的人也不粗鲁。这会让他们不太愿意在将来帮助你。