You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FOLDERID_SkyDrive无法识别OneDrive for Business路径,如何获取其正确根目录?

获取OneDrive for Business根路径的正确方法

这个问题很常见——你用FOLDERID_SkyDrive拿到的是个人版OneDrive的路径,而OneDrive for Business需要用专门的标识:FOLDERID_SkyDriveCommercial。

修正后的代码示例

直接替换对应的FOLDERID参数就能得到正确路径,代码如下:

#include <windows.h>
#include <shlobj.h>
#include <iostream>

int main() {
    PWSTR odBusinessPath = nullptr;
    HRESULT hr = SHGetKnownFolderPath(FOLDERID_SkyDriveCommercial, KF_FLAG_DEFAULT, NULL, &odBusinessPath);
    
    if (SUCCEEDED(hr)) {
        std::wcout << L"OneDrive for Business 根路径: " << odBusinessPath << std::endl;
        CoTaskMemFree(odBusinessPath); // 别忘了释放API分配的内存
    } else {
        std::wcout << L"获取路径失败,错误码: " << hr << std::endl;
    }
    return 0;
}

关键细节解释

  • FOLDERID_SkyDrive:微软早期把个人云存储叫SkyDrive,后来改名OneDrive,这个ID一直保留对应个人账户的同步路径,也就是你拿到的%USERPROFILE%\OneDrive
  • FOLDERID_SkyDriveCommercial:专门为OneDrive for Business(工作/学校账户)设计的标识,会准确返回类似%USERPROFILE%\OneDrive - MyCompany的路径
  • 系统版本要求:这个ID从Windows 8.1开始支持,现在主流系统都满足这个要求

额外提示

  • 如果用户同时登录了个人和商业版OneDrive,分别调用FOLDERID_SkyDrive和FOLDERID_SkyDriveCommercial会得到两个独立的路径,不会互相干扰
  • 调用时不需要特殊权限,只要当前用户已经登录了OneDrive for Business账户,就能正常获取路径

内容的提问来源于stack exchange,提问作者asnyder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:42:48