用户权限和COM对象

User Permissions and COM Objects

本文关键字:对象 COM 权限 用户      更新时间:2023-10-16

我目前正在做一个与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服务器的任何想法

谢谢

Windows保护的全部意义就是防止你做这样的事情。Windows怎么知道你不是一个试图安装恶意软件的病毒?

你唯一的希望是启动另一个通过它的清单请求管理员权限的程序。此时,Windows将要求输入管理员密码。

如果可能的话,最好在安装过程中进行COM注册,该过程通常在管理员权限下运行。如果这是不可能的,还有另一种标准的方法:大多数Vista和Win7的家庭用户都有管理权限-只是默认情况下没有启用。要启用这些特权,您应该通过(in)著名的UAC请求提升。