Im trying to create a new key in HKCU with help of this answer from cplusplus:
HKEY hkey;
RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hkey);
const LPCSTR program = "program";
const wchar_t* path = L"(C:\\Users\\Desktop\\wallpaper.jpg)";
RegSetValueEx(hkey, LPCWSTR(program), 0, REG_SZ, (BYTE*)path, wcslen(path));
RegCloseKey(hkey);
But it creates a key with a weird name
and incomplete data
. This is the img of the result.
My second attempt was this so question:
HKEY key;
const char* path = "C:\\Users\\Desktop\\wallpaper.jpg";
RegOpenKey(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &key);
RegSetValueEx(key, TEXT("value_name"), 0, REG_SZ, LPBYTE(path), sizeof path * sizeof(char));
RegCloseKey(key);
It creates a key with correct name
but a weird data
, . What is the reason of creating a key with such characters or incomplete data ? How should i resolve this ? The key's
data
is going to be a string. For example:
Name | Type | Data
KeyName | REG_SZ | c:\user\...
UPDATE:[Solved]
By changing Character Set
in project properties to Use Multi-Byte Character Set
And this one will do the trick:
HKEY key;
const char* path = R"("C:\Users\Desktop\program.bat")";
RegOpenKey(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &key);
RegSetValueEx(key, TEXT("value_name"), 0, REG_SZ, LPBYTE(path), strlen(path));
RegCloseKey(key);
I have edited the question for many times, Its much clearer and its not duplicate now. Can you guys reopen it and upvote the question? I have reached my question limit in my 2nd question. Its so cruel.