不同的excel CLSID for Excel会导致Interop在C#程序中出现问题

基本上我只需要知道这两个CLSID的区别。 我有服务器,干净的安装,与办公室新成像。 在Excel应用程序下的DCOM中,我有一个{00020812-0000-0000-C000-000000000046}的APPID。 我为这个AppID设置了特定的标识和启动权限。

当我运行我的应用程序正在转换一个Excel文件,我得到:

错误:检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:8000401a服务器进程无法启动,因为configuration的标识不正确。 检查用户名和密码。

我查了一下这个CLSID ID,它也是一个Excel应用程序的GUID。 虽然这不是在DCOM中列出的。 所以我觉得我在这里有冲突? 可能不同版本的办公室或x86与x64拱门在同一个盒子上相互竞争? 我不知道我应该如何设置{00024500-0000-0000-C000-000000000046}上的身份用户,因为它不是在DCOM中列出的。 我环顾四周,但没有发现太多的这个问题。 任何帮助将不胜感激。

关于这个问题的小更新与修复!

虽然我愿意接受下面的答案,因为interop是基于服务器的应用程序/服务的自动化不好。 我知道这是事实。 原来在我的情况下,我有一个不好的dcomperm.exe工具,我从某处得到。 我在安装Windows 7 .NET 4.0 SDK时遇到了问题,所以不是为了解决这个问题,而是从网上抓取了一个编译好的DcomPerm。 馊主意。 今天早上我发现了一个解决SDK安装问题的方法。 然后,我可以从SDK参考(C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Samples \ com \ fundamentals \ dcom \ dcomperm)编译我自己的DcomPerm.exe工具。 这个工具工作。 没有更多的身份错误。

我还没有得到与旧的DcomPerm工具的错误,但不知何故,它没有正确接线的一切。 显然,Interop是一个非常敏感的非企业解决scheme,这一切都是有道理的。

您需要使用为服务器端执行而devise的组件(例如,Aspose提供的组件),或者在打开XML文件(.xslx等)的情况下使用Open XML SDK,请参阅欢迎使用Open XML SDK 2.5为办公室获取更多信息。

正如前面评论中提到的那样,Microsoft目前不推荐并不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)中自动化Microsoft Office应用程序,因为当Office在此环境中运行时,Office可能会出现不稳定的行为和/或死锁。

如果您正在构build一个在服务器端上下文中运行的解决scheme,则应该尝试使用已经安全的组件进行无人值守的执行。 或者,您应该尝试find允许至less部分代码运行在客户端的备选scheme。 如果从服务器端解决scheme使用Office应用程序,那么应用程序将缺less许多必要的function来成功运行。 此外,您将面临整体解决scheme稳定性的风险。