44{
45 SC_HANDLE hServiceManager =
NULL;
46 SC_HANDLE hService =
NULL;
50 DWORD dwDisposition, dwError;
53
54 DPRINT(
"RegisterService()\n");
55
57 if (hServiceManager ==
NULL)
58 {
59 DPRINT1(
"OpenSCManager() failed!\n");
61 goto done;
62 }
63
65 if (pszDisplayName ==
NULL)
66 {
67 DPRINT1(
"ReadString(IDS_DISPLAYNAME) failed!\n");
69 goto done;
70 }
71
73 if (pszDescription ==
NULL)
74 {
75 DPRINT1(
"ReadString(IDS_DESCRIPTION) failed!\n");
77 goto done;
78 }
79
82 pszDisplayName,
87 L"%SystemRoot%\\system32\\svchost.exe -k netsvcs",
90 {
91 DPRINT1(
"CreateService() failed!\n");
93 goto done;
94 }
95
99 &ServiceDescription) ==
FALSE)
100 {
101 DPRINT1(
"ChangeServiceConfig2() failed!\n");
103 goto done;
104 }
105
107 L"System\\CurrentControlSet\\Services\\W32Time\\Parameters",
108 0,
114 &dwDisposition);
116 {
117 DPRINT1(
"RegCreateKeyEx() failed!\n");
119 goto done;
120 }
121
122 pszValue =
L"%SystemRoot%\\system32\\w32time.dll";
125 0,
130 {
131 DPRINT1(
"RegSetValueEx() failed!\n");
133 goto done;
134 }
135
136 pszValue =
L"SvchostEntry_W32Time";
139 0,
144 {
145 DPRINT1(
"RegSetValueEx() failed!\n");
147 goto done;
148 }
149
150done:
153
154 if (hService)
156
157 if (hServiceManager)
159
160 if (pszDescription)
162
163 if (pszDisplayName)
165
166 return hresult;
167}
static PWSTR ReadString(_In_ UINT uID)
#define RegCloseKey(hKey)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
#define HeapFree(x, y, z)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define REG_OPTION_NON_VOLATILE
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, LPCWSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword)
BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInfo)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
#define HKEY_LOCAL_MACHINE
#define SERVICE_CONFIG_DESCRIPTION
#define SC_MANAGER_CREATE_SERVICE
#define SERVICE_WIN32_SHARE_PROCESS
#define SERVICE_AUTO_START
#define SERVICE_ERROR_NORMAL