在windows 7 64位操作系統(tǒng)下注冊(cè)進(jìn)程內(nèi)服務(wù)器時(shí),我曾經(jīng)遇到過(guò)幾個(gè)挫折。我對(duì)這些情況做了個(gè)小結(jié),希望能幫助遇到同樣困難的人。
沒(méi)有以系統(tǒng)管理員的身份運(yùn)行注冊(cè)命令。在vista以前的操作系統(tǒng)中,我們可以在編譯后的事件中運(yùn)行注冊(cè)命令來(lái)完成實(shí)時(shí)自動(dòng)的注冊(cè),而vista, win7等操作系統(tǒng)則不能這樣注冊(cè)。原因是vista以前的操作系統(tǒng)中沒(méi)有UAC的控制,當(dāng)然我們可以關(guān)閉UAC來(lái)獲得這項(xiàng)便利。除了上述通過(guò)添加事件來(lái)注冊(cè)的方法外,我們通常還會(huì)在CMD提示符下運(yùn)行regsvr32的命令手工地完成注冊(cè),我們?cè)趩?dòng)CMD提示符時(shí),就一定要記得以管理員身份啟動(dòng)。否則,如果開(kāi)啟了UAC功能,那么注冊(cè)會(huì)失敗。
上面講述了操作系統(tǒng)中新增的UAC功能對(duì)注冊(cè)組件的影響,這段則講述64位操作系統(tǒng)對(duì)注冊(cè)語(yǔ)法的限制。在32位操作系統(tǒng)中,我們通常的做法是進(jìn)入到組件所在的目錄,然后運(yùn)行regsvr32 /s dllname.dll等命令。然而這樣的語(yǔ)法在64位操作系統(tǒng)中會(huì)產(chǎn)生失敗,失敗的提示初看上去似乎是說(shuō)COM組件本身內(nèi)部的問(wèn)題,其實(shí)并不是這么一回事。失敗的原因是因?yàn)槲覀兊淖?cè)語(yǔ)句不對(duì),正確的注冊(cè)語(yǔ)法為regsvr32 “完整的路徑\dllname.dll”。
這里我主要講了注冊(cè)命令的使用注意點(diǎn),對(duì)于注銷(xiāo)命令同樣適用。