我正在将VSTO OUTLOOK加载项从32位迁移到64位。它在Office 2007 32位上运行良好。目标是使其在Office 365 64位上运行。
我已经重新编译了64位平台形式的外接程序,并更新了安装屏蔽项目。
当我使用我的帐户(我有管理员权限)在新的Windows 10计算机上安装外接程序时,它工作正常。我可以在Outlook中看到它,并且可以使用它。
但是,如果我退出并要求其他人在保存机器上登录(这个人也有管理员特权),加载项显示在Outlook中,但当用户使用它时,会显示此错误:
系统运行时。互操作服务。COMException(0x80040154):检索CLSID为{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}的组件的COM类工厂失败,原因是以下错误:80040154类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。
有想法吗?
详情:
>
使用以下代码注册DLL:
昏暗WshShell
设置WshShell=CreateObject(“Wscript.Shell”)
该死。运行“regsvr32/s”“C:\Program Files(x86)\MyCompany\AddInName\Redemption64.dll”
设置WshShell=nothing
实际步骤:只是在顶部尝试了一个实用的摘要:1:
当作为第二个用户登录时,尝试启动regedit。exe
并导出HKCR
(也可能是HKCU
),然后注册COM dll,再次导出,并使用合适的diff工具进行diff(如果启动完全有效)<代码>2:下载ProcMon。exe并监视应用程序/加载项启动,以确定发生了什么<代码>3:使用Visual Studio,逐步查看并检查模块
视图,以确定启动期间发生了什么<代码>4:使用oleview。exe
查看COM文件需要什么注册(打开embedded typelib)<代码>文件=
快速检查:可能先检查一下:Outlook Redemption-使用RedemptionLoader而不使用regsvr32 DLL。
另外,在第二个用户登录之前,您是否关闭了所有功能?还是你只是换了用户?也许两者都可以尝试,确保你的第一次登录没有加载或锁定任何内容。
下面的“注册调试”可能未达到目标。看起来这可能是更奇怪的事情。也许只是浏览一下。
部署助记符:可以试试这个部署助记符。一小段提醒你如何思考如何解决部署问题:
“什么是锁定,什么是阻塞,什么是缺失,等等……”
注册:虽然这看起来像是一个简单的缺少注册,但它可能是更奇怪的东西。我有一个应用程序启动检查列表,你可以浏览一下。不是为加载项写的,但可能会给你一些想法。
>
regsvr32.exe:您是否尝试以第二个用户的身份手动运行regsvr32.exe
来检查这是否有效?虽然每个用户都可以注册一个COM文件,但我不知道使用regsvr32.exe
来做到这一点的可靠方法。
ProcMon.exe:你熟悉使用ProcMon.exe吗?她是一个基本的例子。汉瑟曼展示了它是如何完成的(YouTube)。你可以用它来尝试确定什么时候失败了。需要一些练习才能有效使用,但这是我的“第一个也是最后一个手段”。 Visual Studio:我喜欢使用Visual Studio来逐步完成代码,并查看不同的窗口(例如模块),以了解应用程序是如何工作的,从而确定启动过程中可能出现的错误。 oleview.exe:要弄清楚COM文件在自注册期间注册了什么,有几种方法。用管理员权限启动oleview.exe
,然后执行File
=
RegSpy2.exe:或者,您可以使用RegSpy2.exe进行COM注册提取。请参见此处的示例。
自注册:不建议对COM注册进行自注册,如下所述:MSI注册dll-自注册被视为有害。在Installshield中,只需在构建时提取COM数据即可注册COM文件,如下图所示。通过将“.NET COM Interop”标志设置为yes
,也可以在同一列表中启用COM Interop注册:
https://imgs.xnip.cn/cj/n/38/cb23f104-5168-4caa-9db3-3b08bf095db7.png" width="100%" height="100%" />
COM互操作:. NET程序集可以使用regasm.exe
注册为COM使用。这(几乎)与上面提到的. NET COM互操作设置设置为"yes"
相同。如果您想使用来自. NET的COM文件,您需要生成一个互操作程序集文件,然后安装和注册真正的COM文件(您可以这样做)。这两个操作都必须执行。
插入几个链接。这些(古代)文章涉及regasm.exe
、tlbexp.exe
、tlbimp.exe
和gacutil.exe
的使用。您不需要,但留下供参考:
从调用COM组件。净客户
- 打电话给警察。NET组件从COM组件中删除
一些链接:
向WIX注册COM EXE
- 使用Wix Msi安装程序在安装后将CPP dll注册到COM中
- 使用“Visual studio安装程序”创建的安装程序安装应用程序后,应用程序无法打开
我尝试使用JSCH连接到远程windows计算机,连接成功。 我也尝试停止cygwin服务,但连接不成功。 我想连接到一个没有安装cygwin的远程windows机器,并使用java在命令提示符中执行命令。 我有机会查看Psexec工具,但安全性受到了冲击。 有人能建议一些其他的想法来连接到远程windows机器使用Java并执行命令吗?
我见过几个与这个话题有关的问题和答案,但我一直无法掌握如何做。 > 我所能做的:使用Python脚本(使用Paramiko)连接到远程计算机,并返回信息,例如,ping交换机: ssh=pk.sshclient() ssh.connect(“{}”.format(IP),port=xxx,username='xxx',password='xxx') stdin,stdout,stderr=\“ s
如果我从命令行创建RMI注册表,则客户端将对象绑定到注册表没有问题。 但是,如果我使用启动RMI注册表,它会出错。 这是我使用创建的代码 当我尝试绑定到我自己的RMI注册表时,我因使用而遇到的错误 是一个接口 有什么想法吗?
我正在尝试使用ngrok通过SSH(公钥认证)从远程计算机通过互联网连接到Windows用户。但显然不起作用。 以下是我所做的。 我在windows上安装并激活了SSH。 我生成了公钥文件,并从发送到远程机器进行ssh。 我在SSH设置文件“C:\ProgramData\SSH\sshd\u config”中更改/添加了以下行 我重新启动了ssh服务器以应用设置更改。 我安装了ngrok并运行ng
在 Corda 帐户库中,为了将帐户的主机“所有权”从一个节点更改为另一个节点,需要将处于 AccountInfo 状态的更改为新主机(节点),并共享与此帐户相关的所有保管库状态。 AccountInfo没有更新命令(AccountInfos命令),这意味着您无法在创建主机后更改主机。 < li >此功能是否因任何原因被排除?是否有计划引入更新命令(以及支持流)? < li >移动/转移(主机所有
使用USB连接线连接个人计算机和PSP™ 可连接个人计算机和PSP™,再将档案从个人计算机复制至Memory Stick™或主机内存。要从PS3™复制档案时亦可使用相同方法。 使用USB连接线,连接PSP™和个人计算机。要将档案复制至Memory Stick™时,需先将Memory Stick™正确插入PSP™内。 其他方法 使用卡片阅读机 从PSP™取出Memory Stick™后,可使用市售的