用户权限和COM对象
User Permissions and COM Objects
我目前正在做一个与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请求提升。
相关文章:
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 从 WinRT C++组件访问 COM 对象
- 通过 COM 对象连接 x64 应用程序时出现问题
- 我如何知道COM对象与不同的COM UUIDS兼容
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 组件对象模型 (COM):IMalloc::Alloc 在哪里分配内存?
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 在没有共享 COM 对象的情况下使用 COM STA 或 MTA?
- 如何在C++命令行界面程序中运行 COM (.ocx) 对象.(VS2017)
- 初始化com对象的问题
- UI自动化回调中com对象的所有权
- 从 COM 对象快速读取西里尔字母
- 如果从函数返回指向指针 COM 对象的指针,我是否需要 AddRef()?
- 如何通过 COM 互操作访问复杂对象的属性?
- 使用 com 对象删除计划任务
- 如何使用OlesetClipboard将我的COM对象放置在剪贴板上时解决问题
- 在自定义源和 SmartTee 之间插入筛选器会泄漏 COM 对象
- COM 对象中的回调