2017-07-10 6 views
0

WPFアプリケーションでは、新しいOutlookアイテムを表示し、送信前に編集できるようにする必要があります。アプリケーションは管理者権限で起動するため、ユーザーのOutlookが既に開いている場合は、Outlookインスタンスを取得するときにエラーが発生します。どのようにそれを解決するには?ありがとう、ありがとう。C#別のセキュリティコンテキストでOutlookを起動

+1

これまでに試したことを提供する必要があります。誰かがあなたを助けることは不可能です –

答えて

0

異なるセキュリティコンテキストで実行されているOutlookを自動化することはできません。しかし、実行オブジェクトテーブル(ROT)から指定されたオブジェクトの実行インスタンスを取得するMarshal.GetActiveObjectメソッドを使用してOutlookインスタンスを取得しようとするケースを検出できます。だから、

Outlook.Application GetApplicationObject() 
    { 

     Outlook.Application application = null; 

     // Check whether there is an Outlook process running. 
     if (Process.GetProcessesByName("OUTLOOK").Count() > 0) 
     { 

      // If so, use the GetActiveObject method to obtain the process and cast it to an Application object. 
      application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application; 

      if(application == null) 
       MessageBox.Show("You need to run Outlook under the same security context"); 
     } 
     else 
     { 

      // If not, create a new instance of Outlook and log on to the default profile. 
      application = new Outlook.Application(); 
      Outlook.NameSpace nameSpace = application.GetNamespace("MAPI"); 
      nameSpace.Logon("", "", Missing.Value, Missing.Value); 
      nameSpace = null; 
     } 

     // Return the Outlook Application object. 
     return application; 
    } 

Outlook.exeプロセスが存在する場合、あなたはあなたが行うことができ、すべてが同じセキュリティコンテキストでアプリケーションを実行するために、ユーザーを依頼することですオブジェクトを取得することはできません:たとえば。

0

同じセキュリティコンテキストでアプリを起動することはあまりできません。

関連する問題