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

C# 以管理员身份运行项目有助于处理数据库,但会导致system.runtime.interopservices.comexception,c#,outlook,sql-server-ce,administrator,comexception,C#,Outlook,Sql Server Ce,Administrator,Comexception,我做了一个项目,使用sqlserverce数据库获取价目表、员工信息等,以PDF格式提供报价,并打开新的电子邮件发送给客户 第一个问题是:“指定的表不存在。[XXXXX]”。我发现,若我以管理员的身份运行project,它将有助于连接数据库 但它会导致其他问题:当Outlook打开时,按管理员给出的方式运行项目(当Outlook关闭时,没有问题): 当project尝试创建新电子邮件时 是否有任何解决办法或方法使这两个部分一起工作?你有什么线索吗?我在谷歌上搜索了一下,但我知道我必须更改注册表以

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

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

但它会导致其他问题:当Outlook打开时,按管理员给出的方式运行项目(当Outlook关闭时,没有问题):

当project尝试创建新电子邮件时

是否有任何解决办法或方法使这两个部分一起工作?你有什么线索吗?我在谷歌上搜索了一下,但我知道我必须更改注册表以避免第二个问题。还有别的办法吗

这是电子邮件的代码:

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();
这是数据库连接的代码(在程序中很少发生):


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

其他研究表明,无法执行我想要执行的操作(以管理员身份运行项目,并在outlook打开时创建电子邮件)。所以,唯一的解决办法是解决数据库问题:即按照@spender的建议,将应用程序安装到其他文件夹中,然后再安装程序文件。这很有帮助。

显示您的代码或面部表情。您在哪里保存数据库?在程序文件文件夹中?@spender是,数据库在程序文件中。
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();