我有一个奇怪的问题。我有一个应用程序,允许用户从他们的Outlook邮箱/商店中选择文件夹,并且它应该跳过任何隐藏的文件夹。
为此,我对文件夹执行以下检查:
try
{
if (folder.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10F4000B"))
{
// Yes, it's a hidden folder
return true;
}
}
catch (System.Runtime.InteropServices.COMException comex)
{
// If the hidden property doesn't exist at all, we'll get a COM exception
// here, which is fine.
return false;
}
catch (Exception)
{
// Some other failure
throw;
}
现在,在我的测试机器上,这非常好用。我使用MFCMAPI来打开/关闭隐藏属性,应用程序会做出适当的响应。
在另一台远程用户的计算机上,所有文件夹都会显示出来,即使是正常隐藏的文件夹也会显示。
我打开了日志记录并在COMException catch()块中,我最终看到了这样的事情:
Checking to see if Quick Step Settings is hidden: NOT HIDDEN
COMException: The property "http://schemas.microsoft.com/mapi/proptag/0x10F4000B" is unknown or cannot be found.
但是我引导用户通过MFCMAPI检查该文件夹的属性,并且我截取了显示文件夹DOES将该隐藏标志设置为true的屏幕截图。所以我不确定为什么应用程序无法看到该属性......?
用户确实使用了仅限在线邮箱存储/共享邮箱的邮箱,所以我想知道在某些情况下该属性或某些东西是否有不同的命名空间?任何人都可以在这里体重吗?