+int create_messages() {\r
+ HKEY key;\r
+\r
+ char registry[MAX_PATH];\r
+ if (_snprintf(registry, sizeof(registry), "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\%s", NSSM) < 0) {\r
+ eventprintf(EVENTLOG_ERROR_TYPE, NSSM_MESSAGE_DEFAULT, "Out of memory for eventlog registry()!");\r
+ return 1;\r
+ }\r
+\r
+ if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, registry, 0, 0, REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, &key, 0) != ERROR_SUCCESS) {\r
+ eventprintf(EVENTLOG_ERROR_TYPE, NSSM_MESSAGE_DEFAULT, "Can't open eventlog registry!", NSSM_REGISTRY);\r
+ return 2;\r
+ }\r
+\r
+ /* Get path of this program */\r
+ char path[MAX_PATH];\r
+ GetModuleFileName(0, path, MAX_PATH);\r
+\r
+ /* Try to register the module but don't worry so much on failure */\r
+ RegSetValueEx(key, "EventMessageFile", 0, REG_SZ, (const unsigned char *) path, strlen(path) + 1);\r
+ unsigned long types = EVENTLOG_INFORMATION_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_ERROR_TYPE;\r
+ RegSetValueEx(key, "TypesSupported", 0, REG_DWORD, /*XXX*/(PBYTE) &types, sizeof(types));\r
+\r
+ return 0;\r
+}\r
+\r