La méthode OpenSharedItem pour Outlook contient un descripteur de fichier sur les fichiers .msg signés
Numéro de la base de connaissances d’origine : 2633737
Symptômes
La OpenSharedItem
méthode du modèle objet pour Microsoft Outlook ne libère pas le handle de fichier d’un fichier .msg tant qu’Outlook n’obtient pas un certain temps d’inactivité.
Cause
Ce comportement se produit si le fichier .msg est signé ou chiffré (messages basés sur SMIME). Il s’agit d’une limitation de la façon dont Outlook gère en interne le traitement et les descripteurs de fichiers de .msg basés sur SMIME. Outlook effectue une vérification en arrière-plan de la signature sur le message et libère le descripteur de fichier dans le fichier .msg lorsque Outlook obtient un certain temps d’inactivité. Le fichier .msg ne peut être supprimé qu’une fois qu’Outlook a terminé tous les traitements requis et libéré le handle de fichier.
Vous pouvez retarder la tentative de suppression du fichier, bien qu’il n’existe aucun moyen direct de déterminer quand Outlook libérera le verrou de fichier.
Résolution
Il n’est pas prévu de modifier ce comportement.
Informations supplémentaires
Office Outlook 2007 et Outlook 2010 fournissent la OpenSharedItem
méthode permettant d’ouvrir des fichiers de rendez-vous iCalendar (.ics), des fichiers vCard (.vcf) et des fichiers de messages Outlook (.msg). Le type d’objet retourné par cette méthode dépend du type d’élément partagé qui est ouvert.
Dans l’exemple Outlook Microsoft Visual Basic pour Applications (VBA) qui suit, le code ouvre un fichier SignedMessage.msg à l’aide de la OpenSharedItem
méthode . Le code tente ensuite de supprimer le fichier .msg après avoir fermé l’élément de courrier. Si le fichier .msg est signé ou chiffré, le code provoque une erreur Autorisation refusée . Toutefois, si un fichier de .msg non signé ou non chiffré est ouvert, le code supprime le fichier .msg comme prévu.
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour