以管理员身份运行项目有助于数据库,但会导致system.runtime.interopservices.comexception

时间:2014-01-20 19:57:17

标签: c# outlook sql-server-ce administrator comexception

我创建了一个项目,使用sqlserverce数据库进行价格表,员工信息等,以PDF格式提供报价并打开新电子邮件发送给客户。

第一个问题是:“指定的表格不存在。[XXXXX]”。我发现如果我以管理员身份运行项目,它有助于与数据库的连接。

但是它会导致其他问题:当Outlook打开时,以管理员身份运行项目(当Outlook关闭时没问题):

 System.Runtime.InteropServices.COMException Retrieving the COM class factory for component with CLSID ..... (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

当项目尝试创建新电子邮件时。

是否有任何解决方法或方法可以使两个部分协同工作?你有任何线索吗?我google了一下,但我了解到我必须更改注册表以避免第二个问题。还有其他方法吗?

这是电子邮件的代码:

Outlook.Application objApp = new Outlook.Application();
              Outlook.MailItem mail = null;
              mail = (Outlook.MailItem)objApp.CreateItem(Outlook.OlItemType.olMailItem);
              //The CreateItem method returns an object which has to be typecast to MailItem 
              //before using it.
              mail.Attachments.Add((object)saveFile.FileName, Outlook.OlAttachmentType.olByValue, 1, Type.Missing);
              //The parameters are explained below
              mail.To = email;
              mail.BCC = "someemailshere@something.pl";
              mail.Display();

这是数据库连接的代码(在程序中几次发生):

 System.Data.SqlServerCe.SqlCeConnection sqlconnection = new System.Data.SqlServerCe.SqlCeConnection();
  System.Data.DataSet DtSet = new System.Data.DataSet();
  System.Data.SqlServerCe.SqlCeDataAdapter sqladapter;
  string katalog = Application.StartupPath + "\\Bazadanych.sdf"; //Data Source = C:\\Users\\user\\Documents\\Visual Studio 2010\\Projects\\BMGRP\\Oferty BMGRP\\Oferty BMGRP\\bin\\Debug\\BazaDanych.sdf

  sqlconnection.ConnectionString = "Data Source = " + katalog + "; Max Database Size=40"; //zmienić na katalog root programu
  sqlconnection.Open();

  string sql = "SELECT * From Przedstawiciele";
  sqladapter = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, sqlconnection);


  sqladapter.Fill(DtSet);
  comboBox1.DataSource = DtSet.Tables[0];
  comboBox1.DisplayMember = "imie";

  sqlconnection.Close();

是。该程序默认安装在程序文件中。

1 个答案:

答案 0 :(得分:0)

其他研究显示,我无法做我想做的事情(以管理员身份运行项目并在Outlook开启时创建电子邮件)。因此,唯一的解决方案是解决数据库问题:即将应用程序安装在其他文件夹中,然后将程序文件安装为@spender建议。它有所帮助。