Outlook et DLL VB.Net ?

Résolu
cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007 - 13 avril 2007 à 14:00
cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007 - 31 mai 2007 à 18:27
Bonjour à tous,

Je suis actuellement en train de développer une DLL en VB.Net.

Dans un premier temps, j'ai réussi à développer une DLL qui contient une fonction permettant de concatener 2 chaines de caracteres. Cette librairie fonctionne tres bien lorsque je l'appel avec Excel, Access ou encore VB6.

Jusque là tout  va bien......

Je souhaite maintenant implémenter dans ma DLL une fonction qui envoi un mail avec OutLook.
J'ai développé ma fonction en m'aidant d'une méthode que j'avais développé en VBA (et qui marche tres bien)

Le probleme se pose a ce niveau la..... car lorsque j'apppel ma méthode avec Excel (par exemple), une erreur intervient :


                         

J'ai essayer de me documenter sur les divers méthode de Sécurité de l'assembly. J'ai trouvé plusieurs fonctions telle que :   <
Assembly: AllowPartiallyTrustedCallers()>



Sans succès......

Toutes les fonctions de ma DLL qui ne font pas appel a des programme exterieures fonctionnne tres bien. Je sais donc qu'il y a probleme au niveau de l'acces à Outlook via ma DLL.

Je ne suis pas Admin sur ma machine, peut etre que ca vient de là ?

Voici le code de mon Assembly :




Imports System.Security

Imports System.Security.Permissions

Imports System.Reflection

Imports System.Runtime.CompilerServices

Imports Microsoft.VisualBasic

Imports System.Runtime.InteropServices



Imports



Microsoft


Imports
Microsoft.Office


Imports
Microsoft.Office.Interop


Imports
Microsoft.Office.Core


Imports
System.Diagnostics


' Review the values of the assembly attributes

<

Assembly
: AssemblyTitle("")>
<

Assembly
: AssemblyDescription("")>
<

Assembly
: AssemblyCompany("")>
<

Assembly
: AssemblyProduct("")>
<

Assembly
: AssemblyCopyright("")>
<

Assembly
: AssemblyTrademark("")>
<

Assembly
: CLSCompliant(

True
)>


'The following GUID is for the ID of the typelib if this project is exposed to COM

<

Assembly
: Guid("368A9A44-1C23-4414-B466-3008EDD64B68")>


<

Assembly
: AssemblyKeyFile("H:\My Documents\Stage_2007\Projet\2_DLL\Test_Essais\Library_Mail\Key.snk")>


<

Assembly
: AssemblyVersion("1.0.*")> <


Assembly
: AllowPartiallyTrustedCallers()>

Si quelqu'un sait comment acceder à Outlook Via une DLL.Net (VB.Net), je suis ouvert à toutes informations qui pourraient me dépanner.

Merci d'avance.

1 réponse

cs_Pijay Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 12 juillet 2007
31 mai 2007 à 18:27
J'ai trouvé d'ou vient le probleme, je pense que ca peut aider certain.

En effet, les composant .Net sont géré par le CAS(Code Acces Security). En fonction de la stratégie de sécurité, les composants .Net n'ont pas le meme statut en fonction de l'endroit ou ils se trouvent. Par exemple, une DLL.Net n'a pas les memes droits en local que sur l'Intranet d'une entreprise. En effet, par defaut la politique de sécurité du .Net considere les composants d'un intranet (ou d'internet) comme des composants à confiance partielle ("Partially Trust").

Ce qu'il faut savoir, c'est que implicitement les applications ou librairies .Net font appel à des composants installés en local comme mscorlib.dll (GAC ou System32/). Ces composant (mscorlib.dll ou mscoree.dll par exemple) exigent d'etre appelé par des composants de confiance totale ("Full Trust"). Ce qui n'est pas le cas d'un composant placé sur le réseau (Intranet ou Internet).

Pour déployé une librairie.Net sur un réseau (d'entreprise par exemple), il faut obligatoirement avoir les droits d'administration sur les machines clients pour modifier la politique de sécurité du .Net Framework (utilisation du .Net Configuration Tool > voir méthode sur le net, il y en a plein)

Si vous ne posseder pas les droits d'administration (mon cas), vous etes obligé d'installer votre compsant.Net (dll) en local (pour qu'il soit considéré comme un composant "Full Trust").

Donc voila, un petit résumé de plusieurs jours de recherche. Je sais pas si ca peut aider quelqu'un, mais vu la difficulté que j'ai eu à trouver des informations concretes sur le déploiement de DLL.Net, je prefere laissé ce post.

Merci à tous. Bye.
3
Rejoignez-nous