我目前正在處理與COM對象交互的項目。在我的代碼我呼籲以下內容:用戶權限和COM對象
CoInitialize(NULL); //Initialize COM system
HRESULT hr = spSSCProt.CreateInstance(("SSCProt.SSCprotector"));
這應該得到我需要的對象。如果失敗,這大概是因爲COM服務器沒有使用regsvr32
註冊的COM對象。一切都很好,我有以下代碼來處理:
/if its not, lets try to register it ourselves...create the command
CHAR cmdBuf[BUFSIZE];
GetCurrentDirectory(BUFSIZE,cmdBuf);
string cmd("regsvr32 -s \"");
cmd += cmdBuf;
cmd += "\\stixDlls\\SSCProt.dll\"";
//attempt to register it
system(cmd.c_str());
如果用戶不是管理員,則會出現此問題。他們將無法執行COM服務器的註冊代碼部分。我的大多數用戶可能不會是管理員。
任何想法如何我可以註冊com服務器,如果他們不是管理員。
感謝