我的应用程序需要注册两个COM DLL。如果用户具有必要的访问权限,则会自动完成,但是可以使用regsvr32
完成。
现在在几个工作站上会发生以下情况:
cmd.exe
第一次向我报告此错误时,我自动回复:“当然它不起作用,您需要管理员权限。”毋庸置疑,当我试图自己注册DLL时,我感到非常尴尬......
原因可能是:一个DLL可以注册,另一个不能注册。
一些背景资料:
通常我会启动Process Monitor,但我现在无法访问其中一个工作站,所以我必须收集尽可能多的信息,直到我能够接触到其中一个。
更新:我远程访问了其中一个失败的工作站。神秘的事情发生了:
换句话说:
UserA
身份登录,以管理员身份cmd.exe
启动regsvr32.exe
:失败UserB
身份登录,以管理员身份cmd.exe
开始regsvr32.exe
:成功什么可以引入这种行为?!
答案 0 :(得分:3)
要尝试检查的事情:
<强>更新强>
根据您的评论,它看起来作为普通用户的失败注册尝试使机器处于混乱状态。它可以是HKCU\Software\Classes
(HKCR的每用户映射)或HKCR\VirtualStore\MACHINE\SOFTWARE
(虚拟化HKLM)。您需要准确确定注册尝试失败后注册表中剩下的内容。
我会在干净的计算机上运行进程资源管理器,并尝试非提升注册来拍摄快照。
此外,尝试让机器处于这种状态,然后运行非提升的取消注册。在理想情况下,这应该“修复”机器。如果可行,您可以在进行正确修复时为用户提供快速解决方法。