Google에서 수년 동안 PDF, HTML 문서 및 XBRL 문서에서 사용해온 코드가 있습니다. 이 코드는 IE의 BHO 또는 Reader의 Adobe 플러그인에서 호출됩니다. ROT에 모니 커를 등록하고 신호 이벤트를 만듭니다.설치된 adobe 11에서 ROT 등록이 작동하지 않습니다.
우리는 Adobe 9에서 Adobe 11으로 업그레이드하려고 시도해 왔으며 코드를 디버깅하기 만하면 ROT에 모니 커를 등록하지 못합니다. Adobe 9 플러그인에서 호출되고 BHO에서 호출 된 경우 작동합니다. 그러나 단순히 Adobe 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에 넣지 마십시오.
아마도 상승 모드 때문입니까? 시도하기 위해 일시적으로 UAC를 끄고 차이가 있는지 확인하십시오. – Noseratio
@Noseratio - 좋은 생각 ...하지만 우리 자신의 앱 덕분에 UAC는 이미 꺼져 있습니다. 하지만 나는 네가 무언가를하고 있다고 생각한다. 내 ROTViewer가 ROT에 표시하지 않고 다른 응용 프로그램이 액세스 할 수 없더라도 외부의 코드가 아닌 ROT 항목에 액세스하려고 시도했지만 액세스 할 수있었습니다. –