不重起运行服务能成功,但重起后服务管理器那里显示服务启动了,
进程管理器也该exe程序进程,但里面的过程没有执行,事件查看器
里显示
事件 ID ( 0 )的描述(在资源( MyService )中)无法找到。
本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。
您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。
下列信息是事件的一部分: Service started.
CreateService中设为SERVICE_AUTO_START
不知道为什么,请高手回答,谢谢

解决方案 »

  1.   

    在run()里面创建文件夹重起后没发现文件夹,但直接运行exe就创建成功了
      

  2.   

    好象放在windows/system32目录下就可以了!
     回复人: goodboyws(深夜不眠者) ( ) 信誉:92  2005-07-22 12:20:00  得分: 0  
     
     
       文件的相对路径问题
      
     
    goodboyws(深夜不眠者)说的是这个问题吗!
      

  3.   

    在run()里面创建文件夹重起后没发现文件夹,但直接运行exe就创建成功了
    不明白
      

  4.   

    Windows Service的当前路径是C:\windows\system32而不是服务的可执行程序所在的路径,所以如果你调用类似GetCurrentDirectory()就会友问题。需要调用GetModuleFileName()然后将文件名字去掉来得到服务的可执行程序所在的路径.
      

  5.   

    inline BOOL CServiceModule::Install()
    {
        if (IsInstalled())
            return TRUE;    SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        if (hSCM == NULL)
        {
            MessageBox(NULL, _T("Couldn't open service manager"), m_szServiceName, MB_OK);
            return FALSE;
        }    // Get the executable file path
        TCHAR szFilePath[_MAX_PATH];
        
        ::GetModuleFileName(NULL, szFilePath, _MAX_PATH);
    //AfxMessageBox(szFilePath);
    SC_HANDLE hService = ::CreateService(
            hSCM, m_szServiceName, m_szServiceName,
            SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
            SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
            szFilePath, NULL, NULL,NULL, NULL, NULL);    if (hService == NULL)
        {
            ::CloseServiceHandle(hSCM);
            MessageBox(NULL, _T("Couldn't create service"), m_szServiceName, MB_OK);
            return FALSE;
        }    ::CloseServiceHandle(hService);
        ::CloseServiceHandle(hSCM);
        return TRUE;
    }默认是这样的阿
      

  6.   

    放install干什么,放这个没用,放你实现功能的那段代码,并且最好放上调用它的那段代码。