Просматривая свойства, мне кажется, что свойство .EntryID является пустым, если MailItem открывается из файловой системы, и имеет значение, если файл открывается из папки. Это имеет смысл, основываясь на справочной записи для него; одно предостережение заключается в том, что вы также ожидаете, что это свойство будет пустым, если сообщение является новым сообщением (т.е. не было сохранено в папке, но также не существует в файловой системе).
Из справки по поводу пустых значений:
Следовательно, свойство EntryID не является
установить для элемента Outlook, пока он не будет
сохранено или отправлено
Вы хотели бы поэкспериментировать с ним и убедиться, что он определенно ведет себя правильно, прежде чем его реализовать:)
Если все это не выполнить, следующий шаг может быть сложным; Одним из подходов будет проверка дескрипторов, открытых Outlook. Проверка их (в непривилегированном контексте) через Process Explorer показывает, что для каждого сообщения есть дескриптор; имя дескриптора соответствует теме сообщения, путь - это путь к файлу. Одно из решений перечислить их в этом ответе .
НТН,
Geoff