用户权限和COM对象

| 我目前正在与COM对象进行交互的项目中。在我的代码中,我调用以下代码:
CoInitialize(NULL);  //Initialize COM system 
HRESULT hr = spSSCProt.CreateInstance((\"SSCProt.SSCprotector\"));
这应该给我我需要的对象。如果失败,则可能是因为COM服务器没有使用“ 1”注册的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服务器的任何想法。 谢谢     
已邀请:
Windows保护的全部目的是防止您执行此类操作。 Windows应该如何知道您不是试图安装某些恶意软件的病毒? 您唯一的希望是启动另一个程序,该程序通过其清单请求管理员特权。此时,Windows将询问管理员密码。     
如果可能,进行COM注册的最佳位置是在安装过程中,该过程通常是在管理员权限下运行的。如果这不可能,则还有另一种标准方式:Vista和Win7上的大多数家庭用户确实具有管理员权限-默认情况下未启用该权限。要启用这些特权,您应该通过(著名的)UAC请求提升。     

要回复问题请先登录注册