Microsoft 信息保护 SDK - 提取文件状态
在 MIP SDK 文件 API 中,mip::FileHandler::GetFileStatus()
静态函数允许开发人员提取文件状态,而无需创建文件引擎对象、身份验证甚至连接。
只需要文件名、创建 mipContext 以及文件路径和文件流。
支持的文件类型
- 基于 OPC 的 Office 文件格式(Office 2010 及更高版本)
- 旧版 Office 文件格式(Office 2007)
- 通用 PFILE 支持
- 支持 Adobe XMP 的文件
- 电子邮件 - .MSG 格式
GetFileStatus() 函数
mip::FileHandler::GetFileStatus()
允许开发人员提取文件状态。 有关完整列表,请参阅 API 参考。
本文将介绍以下方法:
mip::FileHandler::GetFileStatus()
静态函数- 包含文件或容器的标签和保护详细信息的 FileStatus 对象
IsProtected()
属性IsLabeled()
属性ContainsProtectedObject()
属性
要求
要创建要用于特定文件的 FileHandler
,需要满足以下条件:
- 执行
mipContext
操作 - 无需创建文件引擎
提取文件状态
若要使用 mip::FileHandler::GetFileStatus()
静态函数,开发人员需要传入文件路径或文件流以及 mipContext 来执行此函数。 执行该函数不需要创建文件引擎、身份验证或连接到 Internet。
此函数特别适用于:
- 在创建引擎之前,获取用于解密方案的文件的保护状态。 提前了解保护状态可以让开发人员避免创建引擎的开销(如果文件已受到保护)
- 在创建引擎以尝试读取标签之前,获取可能已有标签的文件的状态(节省时间)
- 获取具有附件且可能需要连同 MSG 文件本身一起分析或解密的 MSG 文件的状态
此 GetFileStatus()
返回包含以下属性的 fileStatus
对象:
IsProtected()
属性 - 返回布尔值 - 文件受保护/加密IsLabeled()
属性 - 返回布尔值 - 文件带标签ContainsProtectedObject()
属性 - 返回布尔值 - 文件/容器/消息包含受保护的对象。
建议对这三个属性进行询问,因为文件可能有零到三个属性和不同的排列。
此外,由于 GetFileStatus()
函数不需要身份验证或引擎即可执行,因此 IsProtected()
、IsLabeled()
以及 ContainsProtectedObject()
方法反映文件中是否存在标签或保护。 它不会验证标签和保护是否存在于租户中,或是否可供用户使用。 验证标签和或保护需要通过身份验证和引擎创建过程进行验证。
if (options.count("getfilestatus")) {
auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
if (fileStatus->IsProtected()) {
cout << "File is protected" << endl;
}
if (fileStatus->IsLabeled()) {
cout << "File is labeled" << endl;
}
if (fileStatus->ContainsProtectedObjects()) {
cout << "File contains protected objects" << endl;
}
GetLabel(fileHandler);
return EXIT_SUCCESS;
}
if (options.GetFileStatus) {
var fileStatus = FileHandler.GetFileStatus(options.FilePath, mipContext);
if (fileStatus.IsProtected()) {
Console.WriteLine("The file is protected.");
}
if (fileStatus.IsLabeled()) {
Console.WriteLine("The file is labeled.");
}
if (fileStatus.ContainsProtectedObjects()) {
Console.WriteLine("The file contains protected objects.");
}
return true;
}
if (options.count("getfilestatus")) {
auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
if (fileStatus->IsProtected()) {
cout << "File is protected" << endl;
}
if (fileStatus->IsLabeled()) {
cout << "File is labeled" << endl;
}
if (fileStatus->ContainsProtectedObjects()) {
cout << "File contains protected objects" << endl;
}
GetLabel(fileHandler);
return EXIT_SUCCESS;
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈