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