2014-01-20 5 views
0

Я создал проект, который использует базу данных sqlserverce для прайслиста, emploee info и т. Д., Делает предложение в PDF и открывает новое электронное письмо для отправки его клиенту.Запуск проекта в качестве администратора помогает с базой данных, но вызывает system.runtime.interopservices.comexception

Первая проблема: «Указанная таблица не существует. [XXXXX]». Я узнал, что если я запускаю проект как администратор, он помогает при подключении к базе данных.

Но это вызывает другую проблему: подножка проект как администратор не дает, когда прогноз открыт (не проблема, когда перспектива закрыта):

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 = "[email protected]"; 
       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(); 

Да. Программа устанавливается в файлы программы по умолчанию.

+2

Показать свой код или закрытие лица. Где вы были строкой для сохранения вашей базы данных? В папке Program Files? – spender

+0

@spender Да, база данных находится в программных файлах. –

ответ

0

Дополнительные исследования показали, что делать то, что я хотел сделать, невозможно (запустите проект как администратор и создайте электронную почту, когда Outlook включен). Таким образом, единственным решением было решение проблемы с базой данных: установка для установки приложения в другую папку, а затем программные файлы по предложению @spender. Это помогло.