在windows 7 64位操作系统下注册进程内服务器时,我曾经遇到过几个挫折。我对这些情况做了个小结,希望能帮助遇到同样困难的人。
没有以系统管理员的身份运行注册命令。在vista以前的操作系统中,我们可以在编译后的事件中运行注册命令来完成实时自动的注册,而vista, win7等操作系统则不能这样注册。原因是vista以前的操作系统中没有UAC的控制,当然我们可以关闭UAC来获得这项便利。除了上述通过添加事件来注册的方法外,我们通常还会在CMD提示符下运行regsvr32的命令手工地完成注册,我们在启动CMD提示符时,就一定要记得以管理员身份启动。否则,如果开启了UAC功能,那么注册会失败。
上面讲述了操作系统中新增的UAC功能对注册组件的影响,这段则讲述64位操作系统对注册语法的限制。在32位操作系统中,我们通常的做法是进入到组件所在的目录,然后运行regsvr32 /s dllname.dll等命令。然而这样的语法在64位操作系统中会产生失败,失败的提示初看上去似乎是说COM组件本身内部的问题,其实并不是这么一回事。失败的原因是因为我们的注册语句不对,正确的注册语法为regsvr32 “完整的路径\dllname.dll”。
这里我主要讲了注册命令的使用注意点,对于注销命令同样适用。