如何在c ++中检查文件夹是否具有写权限

时间:2014-02-25 07:14:29

标签: c++ c directory createfile

我想在“d:\ test \”中写一个文件,遗憾的是我没有该文件夹的写权限。 如何检查该文件夹是否具有写入权限。

注意:fopen很有用,但是这会创建一个新文件。我不想创建exra文件。

我也看到了CreateFile(),不知道如何在这种情况下使用它。

3 个答案:

答案 0 :(得分:2)

只需打开(并写入)文件并分析系统返回的错误(如果有)。检查您是否拥有单独操作的权限会导致竞争条件,其中第一次调用告诉您可以创建文件而第二次失败则因为访问权限在中间发生了变化。

答案 1 :(得分:2)

备选方案1:

您可以使用_access_access_s来检查文件是否有权限。

更多信息here

00 Existence only
02 Write-only
04 Read-only
06 Read and write

备选方案2:

如您已尝试CreateFile,请使用GENERIC_WRITE作为dwDesiredAccess

然后看错误,如果有的话。

更多详情here

PS:如果你只需要检查(而不是写/创建文件),删除临时文件(如果已经创建)。

答案 2 :(得分:0)

实际上,检查您是否有权写入的一种方法是使用security access functions。在那里,您可以查询所有不同的权限(删除,创建,写入,索引......)

我从未使用它们,因此我无法为您提供示例。

请记住,在检查访问权限和创建文件或写入之间,访问权限可能会发生变化,但仍可能失败。其他人提到的竞争条件。

如果您最终还是会创建一个文件,那么只需使用其他人提到的CreateFile