一般情况下,用regsvr32注册dll失败很可能是写入注册表的时候出了问题,而注册表问题,一般是权限问题。
我自己电脑问题比较多,经常莫名丢失各种权限。所以碰到这种问题比较多,都用这个方法解决了。
需要的工具: ProcMon
设置ProcMon的filter,例如 Command Line 包含 regsvr32 等等
在cmd窗口运行regsvr32,尝试注册dll,失败,到ProcMon查看信息。
在Result列尝试找到例如"ACCESS DENIED"等字样,问题一般就出在那个地方。
找到对应的注册表项,右键,permissions,如果自己的用户不在用户列表中,则添加自己的用户。
此时可能还会报错!再Permission界面再点击Advanced按钮,下一个窗口又有一个Permission的tab界面,在这里也把自己用户加上。另外还有一个叫Owner的tab,点进去。经过前两步,此时自己的用户应该出现在这里,如果不在的话,手动添加。Apply之后,一路点OK。问题应该就解决了。
此时再尝试注册dll,可能还是会报错,因为注册的时候会创建新的注册表分支,新的分支也有同样的问题,递归调用上述方法解决即可。