Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ursprüngliche KB-Nummer: 2633737
Symptome
Die OpenSharedItem
-Methode im Objektmodell für Microsoft Outlook gibt das Dateihandle einer .msg Datei erst frei, wenn Outlook eine Leerlaufzeit erhält.
Ursache
Dieses Verhalten tritt auf, wenn die .msg-Datei signiert oder verschlüsselt ist (SMIME-basierte Nachrichten). Es ist eine Einschränkung, wie Outlook die Verarbeitung und Dateihandles von SMIME-basierten .msg Dateien intern verwaltet. Outlook führt eine Hintergrundüberprüfung der Signatur in der Nachricht durch und gibt das Dateihandle für die .msg Datei frei, wenn Outlook eine Leerlaufzeit erhält. Die .msg Datei kann nur gelöscht werden, wenn Outlook alle erforderlichen Verarbeitungsschritte abgeschlossen und das Dateihandle freigegeben hat.
Sie können den Versuch, die Datei zu löschen, verzögern, obwohl es keine direkte Möglichkeit gibt, zu bestimmen, wann Outlook die Dateisperre aufgibt.
Lösung
Es gibt keine Pläne, dieses Verhalten zu ändern.
Weitere Informationen
Office Outlook 2007 und Outlook 2010 bieten die Methode zum Öffnen von OpenSharedItem
iCalendar-Termindateien (.ics), vCard-Dateien (.vcf) und Outlook-Nachrichtendateien (.msg). Die Art des Objekts, das von dieser Methode zurückgegeben wird, hängt von der Art des freigegebenen Elements ab, das geöffnet wird.
Im folgenden Outlook-Beispiel für Microsoft Visual Basic for Applications (VBA) öffnet der Code mithilfe der OpenSharedItem
-Methode eine SignedMessage.msg Datei. Der Code versucht dann, die .msg-Datei zu löschen, nachdem das E-Mail-Element geschlossen wurde. Wenn die .msg-Datei signiert oder verschlüsselt ist, verursacht der Code den Fehler Berechtigung verweigert . Wenn jedoch eine nicht signierte oder nicht verschlüsselte .msg Datei geöffnet wird, löscht der Code die .msg-Datei wie erwartet.
Public Sub TestOpenSharedItem()
Dim oNamespace As Outlook.NameSpace
Dim oSharedItem As Outlook.MailItem
Dim oFolder As Outlook.Folder
On Error GoTo ErrRoutine
' Get a reference to a NameSpace object.
Set oNamespace = Application.GetNamespace("MAPI")'Open the Signed Message (.msg) file containing the shared item.
Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\SignedMessage.msg")'Open the Regular Message (.msg) file containing the shared item.
'Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\RegularMessage.msg")
oSharedItem.Close (olDiscard)
Set oSharedItem = Nothing
'Add a reference to Microsoft Scripting Runtime
Dim oFSO As New FileSystemObject
' Try to delete the Signed Message
oFSO.DeleteFile ("C:\Temp\SignedMessage.msg")'Try to delete the Regular Message
'oFSO.DeleteFile ("C:\Temp\RegularMessage.msg")
EndRoutine:
On Error GoTo 0
Set oSharedItem = Nothing
Set oFSO = Nothing
Set oNamespace = Nothing
Exit Sub
ErrRoutine:
Select Case Err.Number
Case -2147024894 ' &H80070002
' Occurs if the specified file or URL could not
' be found, or the file or URL cannot be
' processed by the OpenSharedItem method.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
Case Else
' Any other error that may occur.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
End Select
GoTo EndRoutine
End Sub