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

C# 为什么我的DLL只为一个用户注册?,c#,visual-studio,dll,windows-shell,C#,Visual Studio,Dll,Windows Shell,我已经使用EZShellExtensions.net编写了一个shell扩展。当我以我的身份登录时,它在我的开发环境中工作得非常好,当以我的身份登录时,它在任何其他系统中都工作得非常好。对于所有其他用户,我创建的复制挂钩从未出现过。我已经使用NirSoft的RegDLLView来验证DLL是否已注册,但运气不佳 我可以检查什么来了解为什么会发生这种情况 FYI 我很乐意将我的代码的副本发送给任何想帮忙的人。EZShellExtensions.NET的评估期为30天 更新 如果有人感兴趣,使用供应

我已经使用EZShellExtensions.net编写了一个shell扩展。当我以我的身份登录时,它在我的开发环境中工作得非常好,当以我的身份登录时,它在任何其他系统中都工作得非常好。对于所有其他用户,我创建的复制挂钩从未出现过。我已经使用NirSoft的RegDLLView来验证DLL是否已注册,但运气不佳

我可以检查什么来了解为什么会发生这种情况

FYI

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

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

解决


最后,我将控制台输出添加到dll以进行调试。结果表明,除了我之外,其他任何用户运行时,计时器都没有启动(不知道为什么)。这已被修复。

表明外壳扩展已在HKCU\Software配置单元中注册,而不是在HKLM\Software中注册。只有后一个配置单元才允许所有用户使用扩展。这通常是因为UAC阻止写入HKLM\软件,除非执行写入的程序被提升

如果这个库带有一个专用的注册程序,他们通常会这样做,那么一定要从提升的命令提示符下运行它。启动+所有程序、附件文件夹,右键单击命令提示符链接,然后单击“以管理员身份运行”。重新运行注册工具


如果您仍然有问题,那么SysInternal的ProcMon工具可以准确地显示写入内容的位置。不要犹豫使用供应商的支持渠道。

如果您联系他们的支持,请在此处输入答案。您检查了用户的权限级别吗?@Tim-是的,他们中的一位也是像我一样的系统管理员。我会再次检查。我想我已经核实过了,但我会回去核实的。不……在HKLM下注册。我编写了一个完全不做任何事情的虚拟加载项,它成功了。一旦我添加了其余的代码,它就会“失败”。我的代码中没有任何特定于用户的内容。这很难猜测。向供应商发送失败项目的副本。