Tisha Shaffer Ответов: 2

Outlook interop GetSharedDefaultFolder операция завершилась неудачно из-за проблемы с реестром или установкой.


У меня есть следующий код, хорошо работающий на моем компьютере разработки (Windows XP с Office 2010). Но когда я запускаю исполняемый файл на ПК с Windows 7 с Office 2010, я получаю следующую ошибку:
"Операция не удалась из-за проблем с реестром или установкой. Перезагрузите Outlook и повторите попытку. Если проблема не устранена, переустановите компьютер."
Ошибка происходит в этой строке:

Dim inbox As Folder = ns.GetSharedDefaultFolder(получатель, OlDefaultFolders.olFolderInbox)

У меня есть отдельное приложение, работающее на том же производственном компьютере, который использует Microsoft.Офис.Прогноз.Взаимодействие для преобразования .MSG файлы для .PDF, который работает без проблем.

Imports Microsoft.Office.Interop.Outlook

        log = New cLog()
        Dim AppKeys As IDictionary = ConfigurationManager.GetSection("AppKeys")
        Dim app As New Microsoft.Office.Interop.Outlook.Application()
        Dim box As String
        log.Write("Starting to retrieve mail.")
        Try
            box = AppKeys("mailbox")
            tempLoc = Environment.CurrentDirectory & "\" & ConfigurationManager.AppSettings("TempLoc")
            Dim ns As Microsoft.Office.Interop.Outlook.NameSpace = app.Session
            log.Write("Namespace is: " & ns.CurrentProfileName)
            Dim recipient As Recipient = ns.CreateRecipient(box)
            log.Write("recipient is: " & recipient.Name)
            recipient.Resolve()
            log.Write("recipient resolved")
            Dim inbox As Folder = ns.GetSharedDefaultFolder(recipient, OlDefaultFolders.olFolderInbox)
            log.Write("Got inbox")
            Dim subject As String
            Dim mailCount As Int32 = 0
            log.Write("There are " + inbox.Items.Count.ToString() + " Emails in " + box)
            For Each mm As MailItem In inbox.Items
                If Not subject Is Nothing Then
                    For Each attach As Attachment In mm.Attachments
                        attach.SaveAsFile(tempLoc & filename & attach.FileName.Substring(attach.FileName.Length - 4, 4))
                    Next
                        ''Save email message as msg and create idx file for it
                        filename = filename.Substring(0, filename.Length - 2) & "_" & count + 1
                        mm.SaveAs(tempLoc & filename & ".msg", OlSaveAsType.olMSG)
                End If
            Next
        Catch ex As System.Exception
            log.Write("Excpetion getting mail: " & ex.Message)
        End Try
        app.Quit()



Любые мысли будут очень оценены.

Спасибо,

тшаффер

2 Ответов

Рейтинг:
2

andrewj86

Вчера я ни с того ни с сего начал испытывать ту же ошибку в Outlook VBA. Наконец-то нашли обходной путь.

Изменить это:

Set teamBox = objNS.CreateRecipient("Our.Shared.Mailbox@domain.tld")
Set olTeamBoxItems = objNS.GetSharedDefaultFolder(teamBox, olFolderInbox).Items


До настоящего времени:
Set olTeamBoxItems = objNS.Folders("Our Shared Mailbox").Folders("Inbox").Items


Рейтинг:
2

Member 13966307

В C# используется Outlook = Microsoft.Офис.Взаимодействие.Outlook, мое решение выглядело так:

Прогноз.Пространства имен пространства имен = olApp.GetNamespace("MAPI Для");
Прогноз.MAPIFolder inbox = (Outlook.MAPIFolder)пространство имен.Папки["Общая Папка"].Папки["Входящие"];


Richard Deeming

Это точно такой же код, как и решение 1.