23 #define TOR_SERVICE_NAME "tor" 24 #define TOR_SERVICE_DISP "Tor Win32 Service" 25 #define TOR_SERVICE_DESC \ 26 TEXT("Provides an anonymous Internet communication system.") 27 #define TOR_SERVICE_ACCESS SERVICE_ALL_ACCESS 28 #define SERVICE_ERROR 8 42 LPSERVICE_STATUS lpServiceStatus);
45 LPCTSTR lpServiceName,
46 LPCTSTR lpDisplayName,
47 DWORD dwDesiredAccess,
51 LPCTSTR lpBinaryPathName,
52 LPCTSTR lpLoadOrderGroup,
54 LPCTSTR lpDependencies,
55 LPCTSTR lpServiceStartName,
60 LPCTSTR lpMachineName,
61 LPCTSTR lpDatabaseName,
62 DWORD dwDesiredAccess);
65 LPCTSTR lpServiceName,
66 DWORD dwDesiredAccess);
69 LPSERVICE_STATUS lpServiceStatus);
74 DWORD dwNumServiceArgs,
75 LPCTSTR* lpServiceArgVectors);
99 static bool isSupported();
101 static bool loadServiceFunctions();
119 QProcess::ExitStatus exitStatus();
121 bool install(
const QString &torPath,
const QString &torrc,
122 quint16 controlPort);
130 void finished(
int exitCode, QProcess::ExitStatus);
132 void startFailed(QString
error);
136 SC_HANDLE openService();
138 static SC_HANDLE openSCM();
140 static void closeHandle(SC_HANDLE handle);
DebugMessage error(const QString &fmt)
BOOL(WINAPI * CloseServiceHandle_fn)(SC_HANDLE hSCObject)
DeleteService_fn DeleteService
static ServiceFunctions _service_fns
SC_HANDLE(WINAPI * OpenServiceA_fn)(SC_HANDLE hSCManager, LPCTSTR lpServiceName, DWORD dwDesiredAccess)
ChangeServiceConfig2A_fn ChangeServiceConfig2A
SC_HANDLE(WINAPI * OpenSCManagerA_fn)(LPCTSTR lpMachineName, LPCTSTR lpDatabaseName, DWORD dwDesiredAccess)
BOOL(WINAPI * QueryServiceStatus_fn)(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus)
QueryServiceStatus_fn QueryServiceStatus
BOOL(WINAPI * SetServiceStatus_fn)(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS)
OpenSCManagerA_fn OpenSCManagerA
ControlService_fn ControlService
SC_HANDLE(WINAPI * CreateServiceA_fn)(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPCTSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCTSTR lpBinaryPathName, LPCTSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCTSTR lpDependencies, LPCTSTR lpServiceStartName, LPCTSTR lpPassword)
BOOL(WINAPI * DeleteService_fn)(SC_HANDLE hService)
SetServiceStatus_fn SetServiceStatus
BOOL(WINAPI * StartServiceA_fn)(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCTSTR *lpServiceArgVectors)
BOOL(WINAPI * ChangeServiceConfig2A_fn)(SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInfo)
CreateServiceA_fn CreateServiceA
OpenServiceA_fn OpenServiceA
StartServiceA_fn StartServiceA
BOOL(WINAPI * ControlService_fn)(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
CloseServiceHandle_fn CloseServiceHandle