使用SC.exe通过C ++编码安装Windows服务

时间:2014-02-03 11:25:40

标签: windows winapi

我正在开发VS-2010中的C ++项目,我想安装一个Windows服务。我的问题是scinst是否默认存在于所有Windows 7和Windows 8中,是否可以使用以下代码在Windows中安装服务?或者我该怎么做才能实现它。

void CreateService(void) 
{
   system("sc create MyService binPath=c:\\abc.exe");
}

期待您的回应。

2 个答案:

答案 0 :(得分:6)

您无需使用sc命令,可以通过调用OpenSCManager()CreateService()函数来安装服务。

答案 1 :(得分:1)

以下是一些示例代码,请务必添加正确的错误检查。

SC_HANDLE h_manager = NULL;
SC_HANDLE h_service = NULL;

h_manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

h_service = CreateServiceW( 
    h_manager,                 // SCM database
    L"MyService",              // name of service
    L"My Service",             // display name
    SERVICE_ALL_ACCESS,        // desired access
    SERVICE_WIN32_OWN_PROCESS, // service type
    SERVICE_AUTO_START,        // start type
    SERVICE_ERROR_NORMAL,      // error control type
    L"c:\\abc.exe",            // path to service's binary
    NULL,                      // no load ordering group
    NULL,                      // no tag identifier
    NULL,                      // no dependencies
    L"NT AUTHORITY\\NetworkService",
    L"");                     // no password

CloseServiceHandle(h_service); 
CloseServiceHandle(h_manager);

文档链接: