关闭
J_ouing 2019-09-23 08:37 采纳率: 0%
浏览 376
已结题

添加利用Svchost启动的dll服务,无法启动怎么解决?

添加一个利用Svchost启动的DLL共享服务,在注册表已成功添加,但在服务界面就是启动不起来,会报错126:找不到指定模块。
图片说明图片说明
图片说明

查了很多说该错误是因为dll文件有问题,有没有大佬帮忙看一下dll文件错在哪?
dllmain.cpp:

图片说明

service.h:

#pragma once
#include "stdafx.h"

#ifdef __cplusplus 
extern "C"
{
#endif
    __declspec(dllexport) VOID WINAPI ServiceMain(DWORD dwArgc, LPCTSTR* lpszArgv);

#ifdef __cplusplus 
}
#endif

service.cpp:

#include "service.h"
#include "stdafx.h"



SERVICE_STATUS_HANDLE  g_service_status_handle = NULL;



SERVICE_STATUS g_service_status =

{

    SERVICE_WIN32_SHARE_PROCESS,

    SERVICE_START_PENDING,

    SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_PAUSE_CONTINUE

};



DWORD WINAPI ServiceHandler(DWORD  dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)

{


    switch (dwControl)

    {

    case  SERVICE_CONTROL_STOP:

    case  SERVICE_CONTROL_SHUTDOWN:

        g_service_status.dwCurrentState = SERVICE_STOPPED;

        break;

    case  SERVICE_CONTROL_PAUSE:

        g_service_status.dwCurrentState = SERVICE_PAUSED;

        break;

    case  SERVICE_CONTROL_CONTINUE:

        g_service_status.dwCurrentState = SERVICE_RUNNING;

        break;

    case  SERVICE_CONTROL_INTERROGATE:

        break;

    default:

        break;

    };

    SetServiceStatus(g_service_status_handle, &g_service_status);

    return  NO_ERROR;

}



extern "C"  __declspec(dllexport) VOID WINAPI ServiceMain(DWORD dwArgc, LPCTSTR* lpszArgv)

{

    g_service_status_handle = RegisterServiceCtrlHandlerEx(TEXT("Svchost Service"), ServiceHandler, NULL);

    if (!g_service_status_handle)

    {

        return;

    }



    g_service_status.dwCurrentState = SERVICE_RUNNING;



    SetServiceStatus(g_service_status_handle, &g_service_status);



    while (TRUE)

    {

        Sleep(1000);

        OutputDebugString(TEXT("Hello  Topsec In Svchost"));

    }



    return;

};

展开全部

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-09-23 09:21
    关注

    systemroot已经代表system32了,不需要再\system32
    另外,如果是64bit系统,你的服务是32bit,放在syswow64下。

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部