2013-12-17 1 views
0

실제로 Windows 7 (코드 첨부)의 서비스로 InitPK.dll (C++ dll)을 호출하는 것과 관련하여 전문가의 조언이 필요합니다. dll은 성공적으로로드되지만 PKAgentInit 메소드는 Windows 7에서 Windows 서비스를 사용하여 0 (false)을 반환합니다. Windows XP에서도이 코드는 정상적으로 작동합니다. 또한 Windows 7에서 콘솔 프로그램으로 exec 할 때 코드가 올바르게 작동합니다. PKAgentInit 방법은 Windows 7에서 0을 반환하고 무엇 Windows 서비스를 사용하여 Windows 7에서 에이전트를 호출하는 방법을 권장하는 이유 당신은 우리를 인도 시겠어요 **Windows 7에서 Windows 서비스의 DLL/EXE 프로그램 실행

코드 :.

typedef UINT (CALLBACK* INITPK)();  
m_LogDebug->Log(2,nThreadId,cMethod, 
    "Pre-requisite applications are running so executing Agent...");    
hDll = LoadLibrary(AgentPath.c_str());  
if(hDll == NULL)  
{  
    m_LogDebug->Log(0,nThreadId,cMethod, 
     "Failed to load  [%s]",AgentPath.c_str());  
    return false;  
}  
INITPK InitPK_Func;  
if((InitPK_Func = (INITPK)GetProcAddress(HMODULE(hDll), "PKAgentInit")) == NULL) 
{  
    m_LogDebug->Log(0,nThreadId,cMethod, 
     "Failed to load proc address [%s]",AgentPath.c_str());  
    return false;  
}  
UINT Res = InitPK_Func();    
// returning 0 which means Agent is not executed successfully. 
// Ideally it should return 1.  
m_LogDebug->Log(0,nThreadId,cMethod,"PKAgentInit returned [%d]",Res);  
+0

굵은 글씨체를 사용할 필요가 없습니다. 일반 텍스트는 괜찮습니다. –

+1

InitPK.dll이란 무엇입니까? ... C# 및 C++로 태그가 지정 되었습니까? – parrowdice

+0

여기 누군가가 InitPK에 익숙하지 않으면 답을 얻지 못할 수도 있습니다. 이 문제에 대해 공급 업체에 문의 했습니까? –

답변

0

소스를 보지 않고 InitPK_Func()까지 말하기는 어렵지만 특권 문제이며 서비스가 사용자가해야 할 일을 할 수있는 사용자로 실행되고 있지 않다고 추측 할 수 있습니다. 아마 문제의 코드가 올라야 할 필요가있을 것입니다 (XP에서 작동하는 이유 일 수도 있습니다). 아니면 네트워크 리소스를 만지고 있습니다 (Win7에서 콘솔 앱으로 작동하는 이유 일 수도 있습니다).

하지만 실제로 문제 기능을 디버그하고 오류가 발생한 이유에 대한 정보를 조금 더 반환해야합니다.

관련 문제