【问题标题】:GetDiskFreeSpaceEx Windows API is giving wrong values even after impersonation is done即使在模拟完成后,GetDiskFreeSpaceEx Windows API 也会给出错误的值
【发布时间】:2017-03-31 23:01:57
【问题描述】:

我需要在网络存储 (NAS) 中找到一个文件夹的可用空间,其中只有 一个特定用户具有完全访问权限

在 C++ 中使用 GetDiskFreeSpaceEx API 时,当我尝试从没有该文件夹权限的普通域用户访问时,它会给我 错误的值(垃圾)。在 API 之前,我模拟了具有完全访问权限的用户,并且在模拟过程中没有失败。我提到垃圾值是因为当我尝试访问同一存储的不同驱动器中的不同文件夹时,我得到相同的值。

如果我将该文件夹的访问权限更改为“Everyone”并使用没有模拟的 API,它会返回正确的值。

对于模拟,我尝试使用 LOGON32_LOGON_INTERACTIVELOGON32_LOGON_NETWORK 登录。

我在这里错过了什么吗?要授予某种额外的权限?

任何帮助将不胜感激。

【问题讨论】:

    标签: c++ impersonation msdn diskspace nas


    【解决方案1】:

    根据GetDiskFreeSpaceEx的MSDN文档,相关权限为“调用应用程序必须对该目录具有FILE_LIST_DIRECTORY访问权限。”。

    让我稍微担心的是第一部分,“调用应用程序......”。模拟适用于线程,但 MSDN 没有说“调用线程必须...”。

    另一个问题是如何命名 NAS 驱动器。如果您使用驱动器号映射,则在模拟其他用户时该驱动器号映射可能不可用。

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 2020-04-30
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多