C# Can';不要读取公共安全标志,获取随机数
我将尝试从应用程序\u ItemSend上的PR\u SECURITY\u标志中读取值,以查看邮件是“正常”、“加密”还是“签名” 如果我发送时没有加密或签名,每次都会得到0 但当我在他们之间转换时,我遇到了问题 例如: 加密检查结果1 取消选中加密、签名的检查结果34 取消选中签名、加密的检查结果33(这不应该是1吗?) 取消选中加密、签名和取消选中结果32(这不应该是0吗?)C# Can';不要读取公共安全标志,获取随机数,c#,outlook,vsto,outlook-addin,C#,Outlook,Vsto,Outlook Addin,我将尝试从应用程序\u ItemSend上的PR\u SECURITY\u标志中读取值,以查看邮件是“正常”、“加密”还是“签名” 如果我发送时没有加密或签名,每次都会得到0 但当我在他们之间转换时,我遇到了问题 例如: 加密检查结果1 取消选中加密、签名的检查结果34 取消选中签名、加密的检查结果33(这不应该是1吗?) 取消选中加密、签名和取消选中结果32(这不应该是0吗?) 您只关心两位SECFLAG\u加密的(=1)和SECFLAG\u签名的(=2) 存在一个值为32的未记录位标志。你必
您只关心两位
SECFLAG\u加密的(=1)和SECFLAG\u签名的(=2)
存在一个值为32的未记录位标志。你必须忽略它,只检查你知道的部分。多亏了Dmitry Streblechenko
由于您必须忽略某些位,因此它与代码一起工作:
string PR_SECURITY_FLAGS = @"http://schemas.microsoft.com/mapi/proptag/0x6E010003";
long str = mailItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS);
if (str > 31)
{
str = str % 32;
}
Debug.WriteLine(str);
旗为:
无(=0)
SECFLAG_加密(=1)
已签名的SECFLAG_(=2)
SECFLAG加密和SECFLAG签名(=3)谢谢Dmitry Streblechenko。当我四处尝试时,我也得到了546514等等。如果除以32,剩下的是0,1或2。使用C#进行计算有什么简单的方法吗?当然,您需要使用位运算符(&在您的例子中):
34 = 32 + 2
33 = 32 + 1
string PR_SECURITY_FLAGS = @"http://schemas.microsoft.com/mapi/proptag/0x6E010003";
long str = mailItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS);
if (str > 31)
{
str = str % 32;
}
Debug.WriteLine(str);