【问题标题】:Checking windows file permissions检查 windows 文件权限
【发布时间】:2014-09-10 21:00:18
【问题描述】:

我正在尝试弄清楚如何在不实际更改目录的情况下检查是否可以更改目录。

在 posix 系统上我会这样做:

if (access("/some/path", X_OK) == 0) {
  // okay!
}

要是 Windows 这么简单就好了....

我查看了文档或 GetFileSecurity,但我似乎无法完全理解 Windows ACL 以及我实际必须检查的内容以确保可以更改目录。

【问题讨论】:

标签: c++ windows winapi


【解决方案1】:

确定操作是否成功的唯一方法是实际尝试该操作。

但是,如果您没有相关文件夹的 FILE_TRAVERSESYNCHRONIZE 权限,SetCurrentDirectory 将失败。因此,您可以使用CreateFile 进行测试,而无需实际更改目录。

bool TestForSetCurrentDirPermission(LPCWSTR pszDir)
{
    HANDLE hDir = CreateFile(pszDir, FILE_TRAVERSE | SYNCHRONIZE,
        FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING,
        FILE_FLAG_BACKUP_SEMANTICS, NULL);

    if (hDir != INVALID_HANDLE_VALUE) CloseHandle(hDir);
    return hDir != INVALID_HANDLE_VALUE;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2015-10-16
    • 2011-04-17
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多