Мне нужно запустить AutoCAD из службы Windows. Эта служба работает с «специальным» пользователем домена, который создается только для запуска моего сервиса. Этот пользователь является администратором на компьютере, и этот пользователь установил AutoCAD 2014 на машине. код я использую для запуска AutoCAD 2014 из C#:Как запустить AutoCAD с .NET, используя службу Windows
IAcadApplication acadApp;
try
{
var acadType = Type.GetTypeFromProgID("AutoCAD.Application.19", true);
acadApp = (AcadApplication) Activator.CreateInstance(acadType, true);
}
catch (Exception ex)
{
// do fancy error handling here
}
У меня есть ссылка на библиотеку AutoCAD COM. (Interop.AutoCAD.dll) Если я запустил вышеуказанный код с моим зарегистрированным пользователем, запускается AutoCAD, и я могу делать все, что хочу, с помощью SendCommand. Если я ставлю его в службе (см Update), запустите службу с моим «специальным» пользователем команда CreateInstance бросает это:
{ "Получение COM фабрик классов для компонента с CLSID {BD0DEB94- 63dB-4392-9420-6EEE05094B1F} не удалось из-за следующей ошибки: 80080005 ошибка выполнения сервера (исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). "}
дело в том, что acad.exe начинается, но перестает потреблять память около 44 Мбайт, а через 1-2 минуты я получаю исключение. Обычно acad.exe начинается с 112 Мбайт потребляемой памяти. Если я запустил службу у зарегистрированного имени пользователя, все будет работать так, как ожидалось. Оба пользователя находятся в одних и тех же группах пользователей, в том же домене. Поэтому мой код по существу работает. Но цель состоит в том, чтобы иметь серверную программу, которая может запускать материал AutoCAD. Как запустить AutoCAD на сервере в этом сценарии? По некоторым сообщениям по сети, это может быть вызвано проблемами прав доступа. Но какие права я должен предоставить «специальному» пользователю?
ОБНОВЛЕНИЕ: Поскольку я опубликовал его на официальном форуме Autodesk, я не могу запустить AutoCAD из службы. Пользователь не имеет значения. Кто-то на официальном форуме заявил, что AutoCAD нельзя запускать из службы. Либо это, либо что-то с лицензированием может вызвать такое поведение ... Хотя, я все еще открыт для любого решения для запуска AutoCAD из службы. (Windows Service принимала WCF, чтобы быть более точным.)
UDPATE2: Так как я не нашел решение проблемы, и AutoCAD не останавливается с сообщением полезной ошибки, я решил эту проблему без использования службы Windows. В настоящее время я принимаю решение WCF в решении командной строки и запускаю его как пользователь. Это так же уродливо, как и получается. Я даже не могу подсчитать, какие вызовы он принесет. Но крайними сроками являются сроки ... Я по-прежнему открыт для real решений.
ОП добавил новую информацию здесь: http://forums.autodesk.com/t5/NET/Start-AutoCAD-with-interop-but-with-different-user/mp/4815925 –
Могу ли я спросить, почему вам необходимо запустить Autocad из службы. Поскольку вы начинаете его с Сервиса, я верю, что вам не нужно взаимодействовать с пользователем. Что вам нужно сделать, что включает запуск Autocad как службы? –
@PauloCorreia: Мы должны запускать программу LISP ** автоматически **. Он получает некоторые входные значения (Excel) и выполняет сложный дизайн. Нам не нужно взаимодействие с пользователем. (Никогда не говорила, что нам это нужно ...) Моя проблема: использование interop в сервисе, я не могу создать экземпляр AutoCAD (не могу запустить его), поэтому я ничего не могу с этим поделать. – AntiTalent