windows – 为什么COM CoInitializeSecurity在我的DLL中失败?
发布时间:2020-12-14 04:24:28 所属栏目:Windows 来源:网络整理
导读:我目前正在从MS Windows SDK 6.1学习VSHADOW.EXE 3.0.我已经创建了一个可以编译成DLL的版本,该DLL只导出一个新编写的函数,该函数需要将命令行作为字符串,对其进行标记,然后调用旧的wmain. DLL不是COM服务器. 它在编译为EXE时与旧版本完全一样,但在编译为DLL
我目前正在从MS
Windows SDK 6.1学习VSHADOW.EXE 3.0.我已经创建了一个可以编译成DLL的版本,该DLL只导出一个新编写的函数,该函数需要将命令行作为字符串,对其进行标记,然后调用旧的wmain. DLL不是COM服务器.
它在编译为EXE时与旧版本完全一样,但在编译为DLL时不能正常工作,因为此调用失败: CoInitializeSecurity(NULL,-1,NULL,RPC_C_AUTHN_LEVEL_PKT_PRIVACY,RPC_C_IMP_LEVEL_IDENTIFY,EOAC_NONE,NULL); 失败,出现HRESULT错误0x80010119(RPC_E_TOO_LATE,必须在任何接口编组或解组之前初始化安全性.初始化后无法更改.) 我从VB6程序运行导出的函数,其中使用Declare Function vss Lib vshadow.dll导入函数…. 该错误是否意味着VB6程序已经调用了CoInitializeSecurity?我能对错误做些什么? 另外,我还有另一个问题:为什么选择安全值RPC_C_AUTHN_LEVEL_PKT_PRIVACY和RPC_C_IMP_LEVEL_IDENTIFY?其他设置会产生什么影响?
有几个标准的COM调用不属于DLL.与CoInitializeEx()一样,为线程初始化COM的调用. DLL没有自己的线程,它无法覆盖EXE选择的公寓状态.
CoInitializeSecurity()是另一个,它是EXE的工作来调用它.只有它知道要传递的正确值,它才是确定安全策略的值.一个DLL不能,它对客户端进程一无所知. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- HKLM注册表
- windows – 可以使用压缩的dll吗?
- 在Windows 7上安装Python MySQLdb时出错
- windows-phone-7 – 在Windows Phone 7应用程序中访问和操作
- Windows上的python 2.7 vs 2.6速度
- 何时选择通过PowerShell脚本开发PowerShell模块
- windows-server-2012 – 在Windows Server 2012上运行Tridi
- windows-server-2012-r2 – 我是否需要在每个虚拟机中安装防
- 在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.d
- 64位win7/win8/win10系统注册32位控件(.OCX)
推荐文章
站长推荐
热点阅读