Инвентаризация удаленных компьютеров для PST, подключенных к Outlook? - PullRequest
2 голосов
/ 16 января 2012

Я искал решение в течение нескольких дней, просматривал MSDN для Interop.Outlook и думаю, что нашел то, что мне нужно, но, похоже, не могу правильно его реализовать.

Вот код, который я придумал, основываясь на чем-то похожем, что я видел в VBA.

class Program
{
    Stores allstores = new Stores();
    Store store;

    static void Main(string[] args)
    {
        foreach (var store in allstores)
        {
            MessageBox.Show(store.FilePath);
        }

    }
}

`

Это, по сути, должно циклически проходить по списку компьютеров и запускать этот код на их внешнем виде (некоторые 2003, 2007) для инвентаризации всех подключенных PST в каждомвнешний вид профиля.Я уверен, что в этом есть больше кода, но я не могу заставить эту часть работать вообще.Кажется, что не хватает информации для инвентаризации файлов данных Outlook, большинство из них читает электронную почту из почтовых ящиков, а не сам файл данных.

Если кто-то может пролить свет на то, что я пропускаю, Это было бы очень признательно.

РЕДАКТИРОВАТЬ:

Я фактически сделал рабочий кусок кода сейчас, однако у меня проблема с совместимостью.Программа работает так, как это было разработано в Office 2010/2007, однако происходит сбой при доступе к версии 2003.Я предполагаю, что мне нужно использовать Microsoft Office Object 11.0, однако у меня есть только Microsoft Office Object 12.0 в списке - есть ли способ получить ссылку 11.0?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2015

Нет причин для фактического входа в какие-либо профили Outlook (для этого может потребоваться запрос аутентификации).Вся информация уже есть в разделе профиля в реестре.Точное местоположение зависит от версии Outlook, а направляющие раздела профиля генерируются случайным образом, поэтому документированный API управления профилями ( IProfAdmin и т. Д.) Является подходящим вариантом, но, к сожалению, это Extended MAPI и требует C ++ илиDelphi.

Если используется опция Погашение , она включает в себя библиотеку ProfMan (доступную на любом языке), которая позволит вам извлечь все местоположения файлов PST из всех локальных профилейбез фактического входа в систему .:

    'Print the path to all the PST files in all profiles
     PR_PST_PATH = &H6700001E
     set Profiles=CreateObject("ProfMan.Profiles")
     for i = 1 to Profiles.Count
       set Profile = Profiles.Item(i)
       set Services = Profile.Services
       Debug.Print "------ Profile: " & Profile.Name & " ------"
       for j = 1 to Services.Count
         set Service = Services.Item(j)
         If (Service.ServiceName = "MSPST MS") or (Service.ServiceName = "MSUPST MS") Then
            'there should be only one provider for this service
            'but we should really loop through all the providers
            Debug.Print Service.Providers.Item(1).ProfSect.Item(PR_PST_PATH)
         End If
       next
     next
0 голосов
/ 17 января 2012

Это может быть полезно, довольно тщательное сравнение моделей объектов и руководство по разработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...