Metoden OpenSharedItem för Outlook innehåller ett filhandtag på signerade .msg filer
Ursprungligt KB-nummer: 2633737
Symptom
Metoden OpenSharedItem
i objektmodellen för Microsoft Outlook släpper inte filhandtaget för en .msg fil förrän Outlook hämtar en viss inaktivitetstid.
Orsak
Det här beteendet inträffar om .msg-filen är signerad eller krypterad (SMIME-baserade meddelanden). Det är en begränsning av hur Outlook internt hanterar bearbetnings- och filhandtag för SMIME-baserade .msg filer. Outlook utför en bakgrundsverifiering av signaturen i meddelandet och släpper filreferensen till den .msg filen när Outlook hämtar en viss inaktivitetstid. Den .msg filen kan bara tas bort när Outlook har slutfört all nödvändig bearbetning och har släppt filreferensen.
Du kan fördröja försöket att ta bort filen, även om det inte finns något direkt sätt att avgöra när Outlook kommer att släppa fillåset.
Åtgärd
Det finns inga planer på att ändra det här beteendet.
Mer information
Office Outlook 2007 och Outlook 2010 tillhandahåller OpenSharedItem
metoden för att öppna iCalendar-filer (.ics), vCard-filer (.vcf) och Outlook-meddelandefiler (.msg). Vilken typ av objekt som returneras av den här metoden beror på vilken typ av delat objekt som öppnas.
I Outlook-exemplet för Microsoft Visual Basic for Applications (VBA) som följer öppnar koden en SignedMessage.msg fil med hjälp OpenSharedItem
av metoden . Koden försöker sedan ta bort .msg-filen när e-postobjektet har stängts. Om den .msg filen är signerad eller krypterad orsakar koden ett fel om nekad behörighet . Men om en osignerad eller icke-krypterad .msg fil öppnas, tar koden bort .msg filen som förväntat.
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
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för