-
-
Save kostyll/96dc5dc1c271b2cde0ac7574a3448136 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <windows.h> | |
#if define UNICODE | |
#define RegOpenKeyEx RegOpenKeyExW | |
#define RegCreateKeyEx RegCreateKeyExW | |
#define RegDeleteKey RegDeleteKeyW | |
#else | |
#define RegOpenKeyEx RegOpenKeyExA | |
#define RegCreateKeyEx RegCreateKeyExA | |
#define RegDeleteKey RegDeleteKeyA | |
#endif | |
#define MAX_KEY_LENGTH 255 | |
HKEY Open(HKEY root,LPTSTR path, REGSAM permission) | |
{ | |
HKEY hKey; | |
LONG lResult = RegOpenKeyEx( | |
root, //HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER | |
path, // the path of the key | |
0, // must be 0 | |
permission, //KEY_WRITE, KEY_READ, KEY_ALL_ACCESS, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS | |
&hKey // OUT : The result [pass by refrence] | |
); | |
if (lResult == ERROR_SUCCESS) | |
return hKey; | |
return INVALID_HANDLE_VALUE; | |
} | |
void Close(HKEY hKey) | |
{ | |
RegCloseKey(hKey); | |
} | |
HKEY CreateKey(HKEY hKey, LPTSTR path, REGSAM permission) | |
{ | |
DWORD result; | |
HKEY hKeyResult; | |
RegCreateKeyEx(hKey, // the opened key | |
path, // the path of the key | |
NULL, //Reserved | |
NULL, // Class Name | |
0, // 0 || REG_OPTION_NON_VOLATILE || REG_OPTION_VOLATILE | |
permission, // KEY_WRITE, KEY_READ, KEY_ALL_ACCESS, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS | |
NULL, // Security Attribute | |
&hKeyResult, // OUT : return the created key | |
&result // OUT : return REG_CREATED_NEW_KEY || REG_OPENED_EXISTING_KEY | |
); | |
if (result == REG_CREATED_NEW_KEY) | |
return hKeyResult; | |
return INVALID_HANDLE_VALUE; | |
} | |
void DeleteKey(HKEY hKey, LPTSTR path) | |
{ | |
RegDeleteKey(hKey, path); | |
} | |
int main() | |
{ | |
HKEY hKey = Open(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer", KEY_ALL_ACCESS); | |
if (hKey != INVALID_HANDLE_VALUE) | |
{ | |
//do your job | |
if (CreateKey(hKey, "xyz",KEY_ALL_ACCESS) == INVALID_HANDLE_VALUE) | |
DeleteKey(hKey, "xyz"); | |
} | |
Close(hKey); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment