我目前正在处理与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服务器,如果他们不是管理员。
感谢