无法检测活动文档的只读状态

问题描述 投票:0回答:2

寻找我可以通过 VSTO 使用的 C# 解决方案。我们运行的是 Windows 10 和 Office 365

当我们从 SharePoint 打开 PowerPoint 文件时,我们会收到以下警报。

如果您要检查 Presentation 对象的 ReadOnly 属性,它的值为 false

问题是我们有代码根据活动演示文稿的ReadOnly属性是真还是假来执行。

我的猜测是这个 ReadOnly 状态发生在类似于 ProtectedViewWindow

的不同窗口中

如何以编程方式检查上图中显示的READ-ONLY

vsto office-addins powerpoint-addins
2个回答
0
投票

如果您有适用于 Linux 的 Windows 子系统,您可以通过查看

ls -la
命令显示的文件权限来“以编程方式”检查文件是否只读。如果文件是只读的,那么权限将为 -r--r--r-- 或 -r--------。

第一组权限(-)表示文件类型(d代表目录)。下一组三个 (r--) 表示文件所有者的读取权限,第二组 (r--) 表示组的读取权限,第三组 (r--) 表示读取权限对于其他人。

如果三组权限中没有w,则表示该文件是只读的。如果任何一组权限中有一个w,则表示该文件不是只读的并且可以修改。

您可以在 bash 脚本中以编程方式使用此命令。


0
投票

您可以阅读

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;
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.