在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”。
這里我主要講了注冊命令的使用注意點,對于注銷命令同樣適用。