c# - C#、Microsoft Graph:获取使用 OneDrive Business 同步的共享点库的本地路径
问题描述
对于业务应用程序,我们将文档存储在 Sharepoint Online 上(word、pdf、powerpoint...)。该应用程序使用 Microsoft Graph 来获取文件和元数据列表。但是,所有用户都将共享点站点与他们的 OneDrive 业务“同步”,以供本地存储/离线使用。
用户会看到一个“打开文件”按钮,以允许他打开文件并进行更改。但是我怎样才能利用 microsoft graph api 打开本地文件而不是带有文件在线版本的浏览器。
或者至少获取文件的本地“路径”,以便可以使用 Process.Start 打开它
解决方案
目前设法通过一种类似的技术也利用注册表来做到这一点。虽然查看了我发现的所有谷歌结果,但这些年来注册表项和位置发生了很大变化。因此,肯定会更喜欢 Microsoft.Graph 中内置的“官方”方法或使用 ms-onedrive: 链接,类似于 ms-word: 链接等...
public static class ListExtensions
{
public static String GetLocalPath(this List item)
{
var onedriveKey = Registry.CurrentUser.OpenSubKey(@"Software\SyncEngines\Providers\OneDrive");
foreach (var subkeyName in onedriveKey.GetSubKeyNames())
{
var subkey = onedriveKey.OpenSubKey(subkeyName);
var url = subkey.GetValue("UrlNamespace").ToString().Trim('/');
if (url == item.WebUrl)
return (String) subkey.GetValue("MountPoint");
}
return null;
}
}
public static async Task<String> GetDocumentLocalPath(DocumentSharepoint document)
{
var list = await GetList(document.Library);
var path = list.GetLocalPath();
if (path == null)
return null;
return $"{path}/{document.FullName}";
}
推荐阅读
- javascript - 跳过空对象或空对象以分配给猫鼬中的数组
- ios - 快速分页的 PromiseKit
- javascript - 为什么以前的背景颜色记录在变量 C 中?
- javascript - 令人困惑的 JavaScript 赋值语法错误
- java - 简单日期格式错误解析日期
- django - 哨兵日志跟踪器不能实时工作
- php - FPDF 图像功能从不同的扩展名给出错误
- netbeans - 如何更改 NetBeans 分析器使用的 Web 服务器?
- ios - 传递数据并显示该模型
- apache-kafka - KSQL AVRO FORMAT ISSUE for Kafka Connect Elastic Search:org.apache.kafka.connect.errors.DataException:de******ense