Запуск программы DLL / EXE из службы Windows в Windows 7

0

Мне действительно нужна экспертная консультация в решении ситуации, вызвавшей вызов InitPK.dll(C++ dll) в качестве службы в Windows 7 (прикрепленный код). Dll загружается успешно, но метод PKAgentInit возвращает 0 (false) в Windows 7 с помощью службы Windows, то же самое хорошо работает в Windows XP, и код отлично работает, когда exec как консольная программа на Windows 7. Не могли бы вы направить нас, почему метод PKAgentInit возвращает 0 в Windows 7 и что является рекомендуемым способом вызова агента под Windows 7 с помощью службы Windows. **

Код:

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 ++?
Показать ещё 1 комментарий
Теги:
dll

1 ответ

0

Не видя источника InitPK_Func() трудно сказать, но я бы предположил, что это проблема с привилегиями, и служба не работает как пользователь, который может делать то, что вам нужно. Возможно, этот код необходимо повысить (возможно, он работает на XP) или, возможно, он касается сетевого ресурса (возможно, он работает как консольное приложение на Win7).

Но на самом деле вам нужно отладить функцию проблемы и, возможно, изменить ее, чтобы вернуть немного больше информации о том, почему она не удалась.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню