試圖開發我的第一個Windows服務,並且我在Windows 7 MS VC++ 10.0中進行調試。只要它調用,StartServiceCtrlDispatcher(),我得到一個錯誤1063,它說,訪問被拒絕。我是管理員,我究竟該如何通過這個?我是新來的服務。謝謝。代碼:C++ Windows服務錯誤1063
// For WinXp, don't forget to link to
// Advapi32.lib library if needed...
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
// Prototypes, just empty skeletons...
void SvcDebugOut(LPSTR String, DWORD Status);
void WINAPI MyServiceCtrlHandler(DWORD opcode);
void MyServiceStart(DWORD argc, LPTSTR *argv);
DWORD MyServiceInitialization(DWORD argc, LPTSTR *argv, DWORD *specificError);
void main()
{
// Using 2-D array as a table...
// The name of a service to be run in this service process - "MyService",
// The function as the starting point for a service - MyServiceStart or
// a pointer to a ServiceMain() function...
// The members of the last entry in the table must have NULL values
// to designate the end of the table...
SERVICE_TABLE_ENTRY DispatchTable[] = {{_TEXT("MyService"), (LPSERVICE_MAIN_FUNCTION)MyServiceStart}, {NULL, NULL}};
if (!StartServiceCtrlDispatcher(DispatchTable))
SvcDebugOut("StartServiceCtrlDispatcher() failed, error: %d\n", GetLastError());
else
printf("StartServiceCtrlDispatcher() looks OK.\n");
return;
}
// ==========================================================================
// Prototype definitions...just skeletons here...
void WINAPI MyServiceCtrlHandler(DWORD opcode)
{
// Service control information here...
return;
}
void MyServiceStart(DWORD argc, LPTSTR *argv)
{
// Starting service information here...
return;
}
DWORD MyServiceInitialization(DWORD argc, LPTSTR *argv, DWORD *specificError)
{
// Service initialization information here...
return 0;
}
// Very simple info to the standard output...
void SvcDebugOut(LPSTR String, DWORD Status)
{
CHAR Buffer[1024];
printf("In SvcDebugOut() lol!\n");
if (strlen(String) < 1000)
{
sprintf(Buffer, String, Status);
OutputDebugStringA(Buffer);
}
else
printf("String too long...\n");
return;
}