gpt4 book ai didi

c++ - ROT 注册不适用于已安装的 adobe 11

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:38 26 4
gpt4 key购买 nike

我的代码多年来一直用于 PDF、HTML 文档和 XBRL 文档。从 IE 中的 BHO 或 Reader 中的 Adob​​e 插件调用代码。它在 ROT 中注册一个名字对象,并创建一个信号事件。

我们一直在尝试从 Adob​​e 9 升级到 Adob​​e 11,调试代码时,它根本无法在 ROT 中注册名字。如果从 Adob​​e 9 插件调用,或者从 BHO 调用,它就会工作。但是简单地升级到 Adob​​e 11 就足以让它开始默默地失败。

有问题的代码如下:

void CLocatorRegistration::Register( ISourceLocator* pLocator, long nKeyFile )
{
HRESULT hr;
CComPtr<IRunningObjectTable> pROT;
CComPtr<IMoniker> pmk;
CComBSTR bstrName;

// access the ROT
pROT = GetROT();

// create the moniker
pmk = CreateMoniker( nKeyFile );

// put this object in the ROT.
_ASSERTE( !m_bRegistered );
->>hr = pROT->Register( ROTFLAGS_REGISTRATIONKEEPSALIVE, pLocator, pmk, &m_dwROTCookie );
if FAILED(hr)
throw hr;
m_bRegistered = true;

// create the event and signal it, to support notification to any callers that this object
// is now available to connect to
CreateEventName( nKeyFile, bstrName );
m_hEvent.Attach( ::CreateEvent( NULL, TRUE, FALSE, bstrName ));
::SetEvent( m_hEvent );
}

高亮的那行是ROT注册,返回的是S_OK。有谁知道为什么该方法会成功,但条目没有放入 ROT?

最佳答案

我在研究这个问题时发现的问题是 Adob​​e 11 包含一个新的沙盒保护模式设置。开发插件时,默认情况下它不再具有访问操作系统的权限。

出于我们的目的,禁用此设置非常简单,因为这是针对内部应用程序的。有很多其他方法可以实现这一点,但由于时间限制,我们没有研究它们。

Adobe 11 Protected Mode

关于c++ - ROT 注册不适用于已安装的 adobe 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com