Поделиться через


Добавление и удаление хранилища

В этом примере показано, как добавлять и удалять хранилище в заданном профиле.

Пример

В этом образце кода показан метод добавления и удаления хранилища в указанном профиле путем вызова метода AddStoreEx и метода RemoveStore соответственно по отношению к объекту NameSpace .

В Outlook хранилище PST можно удалить только программным методом. Следующий пример кода добавляет хранилище Юникода и помещает PST-файл в расположение по умолчанию для пользовательских PST-файлов: Documents and Settings\<UserName>\Local Settings\Application Data\Microsoft\Outlook. В этом образце кода применяется Environment.SpecialFolder.LocalApplicationData для извлечения пути к папке Application Data в папке Local Settings. После добавления хранилища образец кода удаляет хранилище. Так как метод RemoveStore требует наличия объекта Folder для удаления Store , он перечисляет коллекцию Stores для поиска только что добавленного объекта Store, исходя из свойства FilePath объекта Store.

RemoveStore только удаляет хранилище из текущего профиля. При этом PST-файл не удаляется из файловой системы.

Если для тестирования этого примера кода вы используете Visual Studio, сначала добавьте ссылку на компонент библиотеки объектов Microsoft Outlook 15.0 и укажите переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция Imports или using не должна идти непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующих строках кода показано, как выполнить импорт и назначение в Visual Basic и C#.

Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub CreateUnicodePST()
    Dim path As String = Environment.GetFolderPath( _
        Environment.SpecialFolder.LocalApplicationData) _
        & "\Microsoft\Outlook\MyUnicodeStore.pst"
    Try
        Application.Session.AddStoreEx( _
            path, Outlook.OlStoreType.olStoreUnicode)
        Dim stores As Outlook.Stores = Application.Session.Stores
        For Each store As Outlook.Store In stores
            If store.FilePath = path Then
                Dim folder As Outlook.Folder = _
                    CType(store.GetRootFolder(), Outlook.Folder)
                ' Remove the store
                Application.Session.RemoveStore(folder)
            End If
        Next
    Catch ex As Exception
        Debug.WriteLine(ex.Message)
    End Try
End Sub
private void CreateUnicodePST()
{
    string path = Environment.GetFolderPath(
        Environment.SpecialFolder.LocalApplicationData)
        + @"\Microsoft\Outlook\MyUnicodeStore.pst";
    try
    {
        Application.Session.AddStoreEx(
            path, Outlook.OlStoreType.olStoreUnicode);
        Outlook.Stores stores = Application.Session.Stores;
        foreach (Outlook.Store store in stores)
        {
            if (store.FilePath == path)
            {
               Outlook.Folder folder =
                    store.GetRootFolder() as Outlook.Folder;
               // Remove the store
               Application.Session.RemoveStore(folder);
            }
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

См. также