В основном мне просто нужно знать разницу между этими двумя CLSID. У меня есть сервер, чистая установка, новый образ с офисом. В DCOM в приложении Excel у меня есть APPID {00020812-0000-0000-C000-000000000046}. Я установил для этого идентификатора приложения определенные права доступа и разрешения на запуск.
Когда я запускаю свое приложение, которое конвертирует файл Excel, я получаю:
Ошибка: не удалось получить фабрику классов COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 8000401a Не удалось запустить серверный процесс, поскольку настроенное удостоверение неверно. Проверьте имя пользователя и пароль.
Я посмотрел этот идентификатор CLSID, это также GUID приложения Excel. Однако это не то, что указано в DCOM. Я так понимаю, у меня тут конфликт? Возможно, разные версии офиса или архитектуры x86 и x64 конкурируют друг с другом на одной и той же коробке?? Я не уверен, как я должен установить Identity User на {00024500-0000-0000-C000-000000000046}, поскольку он не указан в DCOM. Я посмотрел вокруг, но не нашел много на эту тему. Любая помощь будет принята с благодарностью.
Небольшое обновление по этой проблеме с исправлением!!!!!
Хотя я был готов принять ответ ниже, поскольку взаимодействие - это плохая автоматизация для серверных приложений/служб. Я знаю, что это правда. Оказывается, в моем случае у меня была плохая утилита dcomperm.exe, которую я откуда-то взял. У меня были проблемы с установкой Windows 7 .NET 4.0 SDK, поэтому вместо того, чтобы бороться с этой проблемой, я где-то взял скомпилированный DcomPerm из Интернета. Плохая идея. Сегодня утром я нашел способ обойти проблему установки SDK. Затем я смог скомпилировать свой собственный инструмент DcomPerm.exe из справочника SDK (C:\Program Files\Microsoft SDK\Windows\v7.0\Samples\com\fundamentals\dcom\dcomperm). Это средство сработало. Нет больше ошибки идентификации.
Я также не получал ошибок со старым инструментом DcomPerm, но почему-то он не все правильно подключал. Очевидно, что с учетом того, что Interop является своего рода обидчивым, не корпоративным решением, все это имеет смысл.