Winapi OpenService返回访问被拒绝

时间:2016-08-13 08:50:03

标签: c++ winapi

我尝试使用OpenService参数调用SERVICE_START,如下所示。

void ServiceStart(AnsiString ServiceName)
{
    wchar_t lpBuffer[256];
    long errorCode;

    SERVICE_STATUS_PROCESS ssStatus;
    DWORD dwOldCheckPoint;
    DWORD dwStartTickCount;
    DWORD dwWaitTime;
    DWORD dwBytesNeeded;

    SC_HANDLE schService;
    SC_HANDLE schSCManager;


    schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);
    if (NULL == schSCManager)
    {
        errorCode = GetLastError();
        FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), lpBuffer, 256, NULL);
        ShowMessage("OpenSCManager failed "+AnsiString(lpBuffer));
        return;
    }


    schService = OpenService(schSCManager,ServiceName.c_str(),SERVICE_START);  
    if (schService == NULL)
    {
        errorCode = GetLastError();
        FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), lpBuffer, 256, NULL);
        ShowMessage("OpenService failed "+AnsiString(lpBuffer)+" "+IntToStr(errorCode));
        CloseServiceHandle(schSCManager);
        return;
    } 
}

OpenService函数返回"访问被拒绝"信息。 以管理员exe身份运行时,OpenService功能运行良好。

我还尝试使用SERVICE_QUERY_STATUS参数进行测试。无需管理员即可正常工作

我没有理解问题的根源。

感谢。

0 个答案:

没有答案