为什么我的DLL只能注册一个用户?

3

我使用EZShellExtensions.net编写了一个shell扩展。在我的开发环境中,当我以我的身份登录时,它能够很好地工作,而在其他用户以我的身份登录的系统中,我创建的复制挂钩永远不会显示。我使用NirSoft的RegDLLView验证了DLL是否已注册,但没有成功。

我应该检查什么以确定出现这种情况的原因?

FYI

我很乐意将我的代码发送给任何愿意帮忙的人。EZShellExtensions.NET有30天的评估期。

UPDATE 如果有人感兴趣,现在可以使用供应商的注册工具输出ProcMon文件为CSV / PML文件。

RESOLVE

最终我添加了控制台输出以进行调试。结果发现没有定时器在以我的身份之外的任何用户运行时启动(不知道为什么)。这个问题已经被修复了。


如果您联系他们的支持团队,请在此处输入答案。 - jgauffin
你检查了用户的权限级别吗? - Tim
@Tim - 是的,其中一个人也像我一样是系统管理员。 - Larry G. Wapnitsky
1个回答

3
这意味着Shell扩展在HKCU\Software而不是HKLM\Software中注册。只有后者可以使扩展对所有用户可用。这通常发生在UAC防止写入HKLM\Software的情况下,除非编写程序的程序被提升了。如果此库带有专用的注册程序(通常会有),请确保从已提升的命令提示符中运行它。开始菜单+所有程序+附件文件夹,右键单击命令提示符链接,然后单击“以管理员身份运行”。重新运行注册工具。
如果您仍然遇到问题,则SysInternal的ProcMon工具可以向您显示确切的写入位置。并且不要犹豫使用供应商的支持渠道。

我会再次检查。我以为我已经验证过了,但我会回去再次验证。 - Larry G. Wapnitsky
不,没有在HKLM下注册。我编写了一个什么都不做的虚拟插件,它可以正常工作。但是,一旦我添加了我的其余代码,它就会“失败”。我的代码中根本没有任何与用户相关的内容。 - Larry G. Wapnitsky
很难猜测。将你失败的项目副本发送给供应商。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接