我正在寻找一种方法来派生缓存到我的本地OneDrive文件夹的文件的OneDrive文件URL?我唯一能想到的是为我拥有的每个OneDrive文件夹硬编码一些根URL,但这似乎很讨厌!
有谁知道OneDrive客户端API可以根据本地文件路径查询URL吗?
我的使用案例:我正在尝试附加并打开Excel工作簿的示例。我以前可以执行此操作Marshal.BindToMoniker(_workbookPath);
然而,Excel现在似乎是在ROT中注册OneDrive URL,而不是本地文件路径。我想,这是在更新Excel 2016时发生的,它为Excel 2016带来了新的自动保存功能,这似乎是我现有代码崩溃的时候。
这里还有一个类似的未解之谜:C# OneDrive for Business / SharePoint: get server path from locally synced file
3条答案
按热度按时间v09wglhw1#
可能需要使用以下密钥:
这包括以下注册表值:URL名称空间:(SharePoint网站URL)装载点:(本地驱动程序位置)
它似乎包括不再同步的旧值-但它应该不会太难检查
或
用于正在被主动同步的路径。
whlutmcx2#
我还在寻找一个解决方案,用于获取OneDrive同步文件资源管理器中文件的SharePoint URL。我注意到您在C:\Users%username%\AppData\Local\Microsoft\OneDrive\settings\Business1 {GUID}. ini下获得了OneDrive同步文件夹和SharePoint GUID之间的Map示例:
libraryScope = 1 630c2a866d9c458b81060eff107887ed+1 5 "GUIDEs" "Documents" 4 "https://mytenant.sharepoint.com/teams/team_10000035" "8d4b558f-7b2e-40ba-ad1f-e04d79e6265a" e0266a43caf347238f684bab486f4e51 e0d25dcb1a014f5f86d787984f6327c2 4f86b3e3e54e42e0bb0f7a58eadf0335 0 "" 0 4cde5c00-3fe3-4162-b831-d8ef440e1593 libraryFolder = 0 1 8bbfe07dfeff41cea7ab5da4a554592a+1 1558084235 "D:\DSUsers\uid41890\TenantName\GUIDEs - General" 2 "General" bd0c1b7c-2a1f-4492-8b1b-8e152c9e0c26
在注册表计算机\HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Business1\ScopeIdToMountPointPathCache中也有此Map
从GUID中,您可以使用SPWeb.GetFile(Guid)获取路径
如果您可以在给定返回SharePoint url的本地OneDrive文件路径的情况下创建一个独立函数,我将非常感谢您在此分享您的解决方案。
liwlm1x93#
我已经在AutoHotkey中实现了一个解决方案参见文档here它是基于@GWD的想法(参见下面的评论),在每个同步位置生成一个带有公式CELL(“文件名”)的临时Excel文件,以将此Map信息提取到一个文本文件,然后稍后解析该文件,以从本地文件到SharePoint URL进行反向Map。