对于业务应用程序,我们将文档存储在Sharepoint Online上(word、pdf、powerpoint…(。该应用程序使用Microsoft Graph来获取文件和元数据的列表。但是,所有用户都已将共享点网站与其OneDrive Business"同步",以供本地存储/脱机使用。
用户会看到一个"打开文件"按钮,允许他打开文件并进行更改。但是,我如何使用microsoft图形api打开本地文件,而不是使用该文件的在线版本打开浏览器。
或者至少获取文件的本地"路径",以便使用Process打开它。启动
目前使用了类似的技术,也使用了注册表。尽管我查看了所有谷歌搜索结果,但这些年来,注册表项和位置发生了很大变化。因此,我当然更喜欢微软内置的"官方"方法。图形或使用ms-onedrive:link,类似于ms-word:links等。。。
public static class ListExtensions
{
public static String GetLocalPath(this List item)
{
var onedriveKey = Registry.CurrentUser.OpenSubKey(@"SoftwareSyncEnginesProvidersOneDrive");
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}";
}