寻找我可以通过 VSTO 使用的 C# 解决方案。我们运行的是 Windows 10 和 Office 365
当我们从 SharePoint 打开 PowerPoint 文件时,我们会收到以下警报。
如果您要检查 Presentation 对象的 ReadOnly 属性,它的值为 false
问题是我们有代码根据活动演示文稿的ReadOnly属性是真还是假来执行。
我的猜测是这个 ReadOnly 状态发生在类似于 ProtectedViewWindow
的不同窗口中如何以编程方式检查上图中显示的READ-ONLY?
如果您有适用于 Linux 的 Windows 子系统,您可以通过查看
ls -la
命令显示的文件权限来“以编程方式”检查文件是否只读。如果文件是只读的,那么权限将为 -r--r--r-- 或 -r--------。
第一组权限(-)表示文件类型(d代表目录)。下一组三个 (r--) 表示文件所有者的读取权限,第二组 (r--) 表示组的读取权限,第三组 (r--) 表示读取权限对于其他人。
如果三组权限中没有w,则表示该文件是只读的。如果任何一组权限中有一个w,则表示该文件不是只读的并且可以修改。
您可以在 bash 脚本中以编程方式使用此命令。
您可以阅读
Presentation.FullName
属性来获取文件名,并检查文件是否是只读的,来自共享驱动器,或者是否设置了网络标记:
static bool CheckMarkOfTheWeb(string filePath)
{
try
{
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
var alternateDataStream = fileStream
.GetAlternateDataStream("Zone.Identifier", FileMode.Open, FileAccess.Read);
return alternateDataStream != null;
}
}
catch (IOException)
{
// Handle file access or stream-related exceptions.
return false;
}
catch (Exception)
{
// Handle other exceptions.
return false;
}
}