OpenSharedItem-metoden for Outlook inneholder et filhåndtak på signerte MSG-filer
Opprinnelig KB-nummer: 2633737
Symptomer
Metoden i objektmodellen for Microsoft Outlook frigir ikke filhåndtaket for en MSG-fil før Outlook får OpenSharedItem
litt inaktiv tid.
Årsak
Dette skjer hvis MSG-filen er signert eller kryptert (SMIME-baserte meldinger). Det er en begrensning av hvordan Outlook administrerer behandling og filbehandling av SMIME-baserte MSG-filer internt. Outlook gjør en bakgrunnskontroll av signaturen i meldingen og frigir filhåndtaket til MSG-filen når Outlook får litt inaktiv tid. MSG-filen kan bare slettes når Outlook har fullført all nødvendig behandling og har utgitt filhåndtaket.
Du kan forsinke forsøket på å slette filen, selv om det ikke er noen direkte måte å fastslå når Outlook slipper fillåsen.
Løsning
Det er ingen planer om å endre denne virkemåten.
Mer informasjon
Office Outlook 2007 og Outlook 2010 gir deg metoden for å åpne OpenSharedItem
iCalendar-avtalefiler (.ics), vCard-filer (.vcf) og Outlook-meldingsfiler (MSG). Objekttypen som returneres av denne metoden, avhenger av hvilken type delt element som åpnes.
I microsoft Visual Basic for Applications (VBA) Outlook-eksemplet nedenfor åpner koden en SignedMessage.msg-fil ved hjelp av OpenSharedItem
metoden. Koden prøver deretter å slette MSG-filen etter at e-postelementet lukkes. Hvis MSG-filen er signert eller kryptert, fører koden til en feilmelding om at tillatelsen ikke er tilgjengelig. Hvis en usignert eller ukryptert MSG-fil åpnes, sletter imidlertid koden MSG-filen som forventet.
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